AtCoder ABC 179 B – Go to Jail Python解説

スポンサーリンク

Go to Jail

高橋君は、「サイコロを 2 個振る」という行動を N 回行いました。 i 回目の出目は Di,1​,Di,2​ です。
ゾロ目が 3 回以上続けて出たことがあるかどうか判定してください。
より正確には、Di,1=Di,2かつ Di+1,1=Di+1,2かつ Di+2,1=Di+2,2を満たすような i が少なくとも一つ存在するかどうか判定してください。

AtCoder Beginner Contest 「Go to Jail」

サイコロD1、D2が3回連続でD1 = D2になればYesを出力とのことです。ゾロ目の回数はflagで管理していきます。あとはD1とD2を受け取って比較すれば大丈夫です。

n = int(input())

flag = False
cnt = 0

for i in range(n):
    d1, d2 = map(int, input().split())
    if d1 == d2:
        cnt += 1
        if cnt == 3:
            flag = True
            break
    else:
        cnt = 0
    
print("Yes" if flag else "No")

if d1 == d2でD1とD2を比較、ゾロ目だったらcnt+1し、さらに条件文でcntの回数を見ます。cntの回数が3回になったらflagをTrueにします。ゾロ目でなかった場合はcntの回数を0回にリセットします。最後にflagがTrueならYes、FalseならNoを出力して完了です。