配点: 100 点 / 実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 10
節分らしく、恵方に関する問題。
問題概要
8方位のいずれかを表す文字列 が与えられるので、
が表す方角と反対の方角を表す文字列を出力せよ。なお、方角と文字列の対応関係は以下の通り。
- 北:
N
- 東:
E
- 西:
W
- 南:
S
- 北東:
NE
- 北西:
NW
- 南東:
SE
- 南西:
SW
制約
- 問題文の通り。
考察
愚直に条件分岐を8種類書いていく...のでもいいのだが、「北東」「北西」「南東」「南西」についても1文字ずつ反転させると考えれば、
N
→S
S
→N
W
→E
E
→W
という4種類の置き換えをfor
文で の各文字に対して行えばよいことになる。
実装例
#include <bits/stdc++.h> using namespace std; // ======================================== // int main() { string D; cin >> D; for (auto &&c : D) { if (c == 'N') cout << "S"; else if (c == 'S') cout << "N"; else if (c == 'W') cout << "E"; else if (c == 'E') cout << "W"; } cout << endl; return 0; }
実装時間: 5分以内
コメント
A問題程度ならそこまで気にしなくていいが、条件分岐はできるだけ少なくした方が実装はラクになるので、常に意識したい。