Yuulis.log

Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 391 A - Lucky Direction | 緑コーダーが解くAtCoder

atcoder.jp

配点: 100 点 / 実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 10

節分らしく、恵方に関する問題。

問題概要

8方位のいずれかを表す文字列  D が与えられるので、  D が表す方角と反対の方角を表す文字列を出力せよ。なお、方角と文字列の対応関係は以下の通り。

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

制約

  • 問題文の通り。

考察

愚直に条件分岐を8種類書いていく...のでもいいのだが、「北東」「北西」「南東」「南西」についても1文字ずつ反転させると考えれば、

  • NS
  • SN
  • WE
  • EW

という4種類の置き換えをfor文で  D の各文字に対して行えばよいことになる。

実装例

#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;
}

atcoder.jp

実装時間: 5分以内

コメント

A問題程度ならそこまで気にしなくていいが、条件分岐はできるだけ少なくした方が実装はラクになるので、常に意識したい。