for
文の練習問題
問題概要
長さの等しい 2 つの文字列 が与えられる。
に含まれる各文字 '@' について、'a', 't', 'c', 'o', 'd', 'e', 'r' のいずれかに置き変えることで、 が一致するようにできるかを判定せよ。
制約
- [tex 1 \le |S| = |T| \le 10]
考えたこと
for
文を回して、各文字 S[i]
, T[i]
について判定していけばよい。
S[i] == T[i]
のとき:OK(両方が '@' である場合も含む)S[i], T[i]
の片方が '@' で、もう片方の文字が a, t, c, o, d, e, r のいずれかのとき:OK- それ以外のとき:NG
という感じでロジックを組めばよい。
コード
#include <bits/stdc++.h> using namespace std; set<char> atcoder({'a', 't', 'c', 'o', 'd', 'e', 'r'}); int main() { string S, T; cin >> S >> T; bool res = true; for (int i = 0; i < S.size(); i++) { if (S[i] == T[i]) continue; if (S[i] == '@' && atcoder.count(T[i])) continue; if (T[i] == '@' && atcoder.count(S[i])) continue; res = false; } if (res) cout << "You can win" << endl; else cout << "You will lose" << endl; }