for 文を使うと少し楽。
問題概要
8 種類の方角を表す文字列 が与えられる。次のいずれかである。
- 北: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; }