前提・実現したいこと
取り組んでいた問題は**ABC017-B「choku語」**です.
テストケースのうち1つだけ不正解となるものがあるのですが,問題自体が古いためテストケースが公開されていません.
teratailで質問すればなぜ不正解となるのかが分かるのではないかと思い質問しました.
###問題文(見やすくするために一部改変しています)
####B - choku語
実行時間制限: 2 sec / メモリ制限: 256 MB
#####問題文
高橋君は、ある日不思議な生物を見た。
その生物は choku 語という言語を用いていることがわかった。
文字列S が以下の条件を満たしているときに S は choku 語であると定義する。
・文字列S が空文字列であるとき。 ・文字列S が、choku 語である文字列 T の末尾に ch をつけた文字列であるとき。 ・文字列S が、choku 語である文字列 T の末尾に o をつけた文字列であるとき。 ・文字列S が、choku 語である文字列 T の末尾に k をつけた文字列であるとき。 ・文字列S が、choku 語である文字列 T の末尾に u をつけた文字列であるとき。
choku 語の理解を深めるため、与えられた文字列が choku 語であるかを判定するプログラムを作成することにした。
#####入力
入力は以下の形式で標準入力から与えられる。
X
1行目には、choku 語か判定したい文字列 X(1≦|X|≦50)が与えられる。
Xは半角小文字アルファベットのみで構成されている。
#####出力
Xが choku 語なら文字列 YES を、そうでないなら文字列 NO を 1 行に出力せよ。出力の末尾にも改行を入れること。
発生している問題
テストケース「subtask1-39.txt」において不正解となる.
該当のコード
(当時僕は「replaceメソッドは第3引数を指定しない場合全ての該当部分を置換する」という仕様を知らず,whileループを用いて実装を行なっていました.)
python3
1X = input() 2beforeX = "" 3if X == "": 4 print('YES') 5 exit(0) 6while True: 7 X = X.replace("\n",'',1) 8 X = X.replace('ch','',1) 9 X = X.replace('o','',1) 10 X = X.replace('k','',1) 11 X = X.replace('u','',1) 12 if X == "": 13 print('YES') 14 exit(0) 15 elif X == beforeX: 16 print('NO') 17 exit(0) 18 else: 19 beforeX = X
試したこと
同じ問題を同じ解き方(replaceメソッドを用いて空文字に置換する方法)で正解している方を見つけたので,その方のコードを参照しました.しかし,自分の書いたコードと動作がどう違うのかわからず,結局何故自分のコードが不正解になったのかはわかりませんでした.
python3
1X = input() 2X = X.replace('ch', '') 3X = X.replace('o', '') 4X = X.replace('k', '') 5X = X.replace('u', '') 6if X == '': 7 print('YES') 8else: 9 print('NO')
補足情報(FW/ツールのバージョンなど)
- Python3.7
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/05/02 17:24 編集
2020/05/02 17:22
退会済みユーザー
2020/05/02 17:23