Official
A - Lucky Direction Editorial
by
A - Lucky Direction Editorial
by
sotanishy
AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。 また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
解法 1
この問題は,\(8\) 通りの場合分けにより解くことができます. N
の反対は S
, SE
の反対は NW
,…… といったルールを全 \(8\) 通り列挙して, if 文により場合分けをすればよいです.
実装例 (Python3)
D = input()
if D == "N":
print("S")
elif D == "S":
print("N")
elif D == "E":
print("W")
elif D == "W":
print("E")
elif D == "NE":
print("SW")
elif D == "NW":
print("SE")
elif D == "SE":
print("NW")
elif D == "SW":
print("NE")
解法 2
\(D\) を \(1\) 文字ずつ反転させることを考えれば,\(4\) 通りの場合分けで済みます.for 文を用いれば,\(D\) が \(1\) 文字である場合と \(2\) 文字である場合を統一的に扱うことができます.
実装例 (Python3)
D = input()
ans = ""
for d in D:
if d == "N":
ans += "S"
elif d == "S":
ans += "N"
elif d == "E":
ans += "W"
elif d == "W":
ans += "E"
print(ans)
実装例 (C++)
#include <bits/stdc++.h>
using namespace std;
int main() {
string D;
cin >> D;
string ans = "";
for (char d : D) {
if (d == 'N') {
ans += 'S';
} else if (d == 'S') {
ans += 'N';
} else if (d == 'E') {
ans += 'W';
} else if (d == 'W') {
ans += 'E';
}
}
cout << ans << endl;
}
posted:
last update: