第10話 白昼夢
はじめに
こちらでは,競技プログラミングコンテストサイトAtCoderの常設コンテスト「AtCoder Beginners Selection」に筆者が挑戦します.記事には,筆者が作成したコード(使用言語はPython)と簡単な解説を載せますので,プログラミング初心者の方の参考になれば幸いです.なお,この記事では,Pythonの詳細な文法については解説致しませんので,そちらに関しては関連記事および文献等を参照して頂きたく存じます.
問題(ABC049C - 白昼夢)
英小文字からなる文字列 S が与えられます.Tが空文字列である状態から始め,以下の操作を好きな回数繰り返すことで S=Tとすることができるか判定してください.
T の末尾に dream dreamer erase eraser のいずれかを追加する.
コード(解答例)
S = input()
T = "" # 空文字
while True:
tmp = S
S = S.removesuffix("dream")
S = S.removesuffix("dreamer")
S = S.removesuffix("erase")
S = S.removesuffix("eraser")
if tmp == S:
break
if S == T:
print("YES")
else:
print("NO")
解説
Sの末尾から単語(dream dreamer erase eraserのいずれか)を削除していき,最終的にT(空文字)と一致するか否かを判定しています.