スパークリング黒ココア/ABC283 C - Cash Register

Created Sat, 24 Dec 2022 Modified Tue, 26 Sep 2023 09:13:30 +0000

問題

ABC283 C - Cash Register

お気持ち

  • 先頭から入力したい気持ちが消せなかったので、一旦逆順に並べかえて、先頭から順に見ていく作業
    • 多分逆順じゃなくても変わらないよねー
    • 今見ている文字が0の時、次の文字も0なら、セットで処理
    • そうじゃないなら、1文字だけ処理
    • 本番、最後の一文字に対しても「次の文字」を要求したためREで1ペナ
      • 多分IndexError?
    • 「00」ならセットで1ボタンで消す、それ以外の数字は1ボタンで消す←多分ここが本質

ソースコード

S = input()
L = list(S)

ans = 0

while L:
    if len(L) >= 2:
        if L[-2] == '0' and L[-1] == '0':
            ans += 1
            L.pop()
            L.pop()
        else:
            ans += 1
            L.pop()
    else:
        ans += 1
        L.pop()
print(ans)

別解

  • あさか氏のreplace解が頭良すぎた
  • replaceの置換挙動をちゃんと理解してたらこれで一発で抜けましたね…天才…