【ABC157 B】「Bingo」を解く【Python3】

「AtCoder」解説一覧へ

3×3のサイズのビンゴカードが、最終的にビンゴしているかどうかを判定する問題です。

ビンゴのパターンが分かっていれば、達成されているかどうかをif文ですべて調べれば上手くいきます。

提出
a = [list(map(int, input().split())) for _ in range(3)]
n = int(input())
b = [int(input()) for _ in range(n)]

for i in range(3):
    for j in range(3):
        for k in range(n):
            if a[i][j] == b[k]:
                a[i][j] = 0

ans = "No"
for i in range(3):
    if a[i][0] + a[i][1] + a[i][2] == 0:
        ans = "Yes"
    if a[0][i] + a[1][i] + a[2][i] == 0:
        ans = "Yes"
if a[0][0] + a[1][1] + a[2][2] == 0:
    ans = "Yes"
if a[0][2] + a[1][1] + a[2][0] == 0:
    ans = "Yes"
print(ans)

入力とビンゴの判定が極力まとまるように記述すると、上記のようになります(もっとシンプルなものがあるかもしれませんが)。

1行目のaは、リストを内包させる方法です。

結果的に、以下のようなリストができます。

a = [[A1,1, A1,2, A1,3], [A2,1, A2,2, A2,3], [A3,1, A3,2, A3,3]]

bを1つずつ確認して、ビンゴカードの同じ数字がある位置を「0」にします。

カードに書かれている数字は「1〜100」なので、それ以外の数字にすると都合がいいです。

「0」を印としてつけたので、ビンゴの条件を達成しているか調べていきます。

とにかく、すべてのビンゴのパターンを調べればいいので、コンテスト本番は、if文をたくさん書いてゴリ押しでも問題ないです。

【ABC157】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です