現代の AtCoder にはあまりない「一行読み込み」を要求する問題
問題概要
"Left Left Right Right AtCoder" のように、"Left", "Right", "AtCoder" のいずれかを空白区切りで連結した文字列が一行で与えられる。
- "Left" は "<" に replace して
- "Right" は ">" に replace して
- "AtCoder" は "A" に replace して
得られる文字列を出力せよ。
考えたこと
C++ では、いつも通り次のようにしてしまうと、空白のところで自動的に打ち切られてしまう。
string S; cin >> S;
そこで、一行まるごと文字列として読み込む。そのためには、次のように getline()
を使えばよい。
string S; getline(cin, S);
あとは、文字列 に対して、問題文で指定された replace する処理をしていけばよい。
コード
#include <bits/stdc++.h> using namespace std; int main() { string S; getline(cin, S); string res = ""; for (int i = 0; i < S.size();) { if (S[i] == 'L') res += "<", i += 4; else if (S[i] == 'R') res += ">", i += 5; else if (S[i] == 'A') res += "A", i += 7; else res += " ", i++; } cout << res << endl; }