Official

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: