[問題] 文字列Sを入力し、そのうちいくつかの文字を省いて"ICT"という文字列が作れるのならYESを、作れないならNOを出力するプログラムを求めよ。ただし、省いて作られる文字列の大文字小文字は区別しないものとする。(python3.8.2を使用)
※Atcoder Regular Contest 022 A-スーパーICT高校生より出典
不正解と判定されたコード↓
python3.8.2
1S=input() 2 3S.lower() 4cnt=0 5for s in S: 6 if s=="i" and cnt==0: 7 cnt+=1 8 elif s=="c" and cnt==1: 9 cnt+=1 10 elif s=="t" and cnt==2: 11 cnt+=1 12 break 13 else: 14 continue 15 16if cnt==3: 17 print("YES") 18else: 19 print("NO")
正解と判定されたコード↓
python3.8.2
1S=input() 2 3S=S.lower() 4cnt=0 5for s in S: 6 if s=="i" and cnt==0: 7 cnt=1 8 elif s=="c" and cnt==1: 9 cnt=2 10 elif s=="t" and cnt==2: 11 cnt=3 12 break 13 else: 14 continue 15 16if cnt==3: 17 print("YES") 18else: 19 print("NO")
文字列Sを全て小文字にしたのち頭から順に見ていき、iが見つかったらcntを1に、その後にcが見つかったらcntを2に、さらにその後にtが見つかったらcntを3にする方針で解きました。
両者の違いは7,9,11行目にあり、前者では条件を満たせばcntに1ずつ加えていく、後者では直接にcntに値を代入する形となっております。
前者と後者とで、正解不正解が異なる検討がつきません。
ちなみに、コードテストを行った際は、両者とも正しい出力がされていました。
前者では不正解になってしまう理由をご教示いただければ幸いです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/23 11:06