けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 391 A - Lucky Direction (8Q, 灰色, 100 点)

for 文を使うと少し楽。

問題概要

8 種類の方角を表す文字列  S が与えられる。次のいずれかである。

  • 北:N
  • 東:E
  • 西:W
  • 南:S
  • 北東:NE
  • 北西:NW
  • 南東:SE
  • 南西:SW

与えられた文字列の反対の方角を表す文字列を出力せよ。

解法

8 通りの場合をすべて if 文で分岐して答えてもよいが、for 文を用いて1 文字ずつ対応すればコードが短くなる。

各文字について、

  • N なら、S を出力
  • E なら、W を出力
  • W なら、E を出力
  • S なら、N を出力

すればよい。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    string S;
    cin >> S;
    for (auto c : S) {
        if (c == 'N') cout << "S";
        else if (c == 'E') cout << "W";
        else if (c == 'W') cout << "E";
        else cout << "N";
    }
    cout << endl;
}