【ABC049 C】「白昼夢」を解く【Python3】

「AtCoder」解説一覧へ

AtCoder過去問精選10問まとめへ

空文字列である T の末尾に「dream, dreamer, erase, eraser」のいずれかを追加することで、与えられた文字列 S と同じものができるかどうかを判定する問題です。

提出
s = input().replace("eraser","").replace("erase","").replace("dreamer","").replace("dream","")

if s:
    print("NO")
else:
    print("YES")

文字列 S が、4つの文字列の組み合わせで出来ているかどうかを判定することで、導き出せます。

replace()メソッドを使用して、S の中にある4つの文字列を、空文字列に置換します。

4つの文字列を置換し終えた S の中に文字が残っていたら「NO」を返し、そうでない場合には「YES」を返します。

置換する順番ですが、上記の順番でないと上手くいかないことがあります。

「dreamer」という文字列が、その後の続きによっては、「dream」と「erase(またはeraser)」で考えなくてはいけない場合があるからです。

「eraser」はそれ以外のパターンがないので、最初に置換します。

すると、次の「erase」もそれ以外のパターンはなくなります。

これによって「er~~」のパターンがなくなったので、順に「dreamer」「dream」と置換します。

【ABC049】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です