AtCoder Beginner Contest 049 C – 白昼夢 をPython3で解く

Share

AtCoder上にある問題のうち、AtCoder Problemsでdiff 800以上と判定されているものを順番に解いていく企画。
基本的な考え方は全てコード中のコメントに入れてあるので、参照のこと。

出典:
AtCoder Beginner Contest 049 C – 白昼夢

dreamer の最後の er と erase の最初の er が被っているなどといった部分をどう処理していくか、という問題。

# AtCoder Beginner Contest 049 C - 白昼夢
# https://atcoder.jp/contests/abc049/tasks/arc065_a
# tag: 文字列 連続部分列 考察

# 文字列の途中の 'eraser' は、'r' から開始する
# ものが無いので、これで必ずひとまとまりに確定する。

# 'eraser' を除いた後の 'erase' はひとまとまりに確定。

# 残りの 'dream' / 'dreamer' は、まず'dreamer' を
# 確定させて(erase, eraserが確定済みのため可能)、
# 最後に 'dream' が確定。

# というわけで、順番に各要素を空文字列に置き換えていき、
# 文字列全体が最終的に空文字列になるなら、
# 問題の条件を満たしていることになる。

def main():
    S = input()

    # eraser, erase, dreamer, dream の順に消していく
    S = S.replace('eraser', '')
    S = S.replace('erase', '')
    S = S.replace('dreamer', '')
    S = S.replace('dream', '')
    if S == '':
        print('YES')
    else:
        print('NO')

main()
Share

コメントを残す

メールアドレスが公開されることはありません。