if
文を並べてもいいし、map
を使ってもよさそう。
問題概要
文字列 が与えられる。 の各文字に対して、
- O → 0
- D → 0
- I → 1
- Z → 2
- S → 5
- B → 8
- それ以外 → そのまま
という変換をして得られる文字列を答えよ。
コード (1):if 文
if 文を使って解いてみた。
#include <bits/stdc++.h> using namespace std; int main() { string S; cin >> S; for (auto c : S) { if (c == 'O' || c == 'D') cout << 0; else if (c == 'I') cout << 1; else if (c == 'Z') cout << 2; else if (c == 'S') cout << 5; else if (c == 'B') cout << 8; else cout << c; } cout << endl; }
コード (2):map
もう 1 つ、map を使って解いてみた。
#include <bits/stdc++.h> using namespace std; int main() { map<char, char> conv = { {'O', '0'}, {'D', '0'}, {'I', '1'}, {'Z', '2'}, {'S', '5'}, {'B', '8'} }; string S; cin >> S; for (auto c : S) { if (conv.count(c)) cout << conv[c]; else cout << c; } cout << endl; }