「サイコロを2回振る」という行動をしたN回の出目から、ゾロ目が3回以上続けて出たかどうかを判定する問題です。
提出
n = int(input())
d = [list(map(int, input().split())) for _ in range(n)]
cnt = 0
ans = 0
for i in range(n):
d1, d2 = d[i]
if d1 == d2:
cnt += 1
ans = max(ans, cnt)
else:
cnt = 0
if ans >= 3:
print("Yes")
else:
print("No")
出目dは、リストにします。
複数行のデータをリストにする際には、内包表記を用いると便利です。
入力例1の場合、dの中身は以下のようになります。
d = [[1, 2], [6, 6], [4, 4], [3, 3], [3, 2]]
このリストを一つ目の[1,2](入力例1の場合)から順に取り出し、d1,d2に代入して、d1,d2が等しいかどうかを判定します。
同じであれば「cnt」に1を加え、「ans」と比較して大きい方を「ans」に代入します。
それ以外では「cnt」を0に戻します。
最終的に「ans」に入っている数値が、3以上かそうでないかを判定し、「Yes」「No」を出力します。
split()メソッド
split()メソッドは、区切り文字を指定して、文字列を分割します。
区切り文字を指定しない場合、空白、タブ、改行で分割されます。
str.split("区切り文字")
map()関数
map()関数は、イテラブル(リストやタプルなど)の各要素に関数の処理を適用します。
map(関数、イテラブル)