백준 2578 빙고 / python

이유참치·2025년 12월 15일

백준

목록 보기
80/248

문제 : 2578

풀이 point

사회자가 매 숫자를 부를 때마다 빙고판을 조사하여 빙고 카운트가 3개 이상인지 확인한다.
대각선을 확인하는 방법은 다음과 같다.

if all(bingo[i][i] == 0 for i in range(5)):
        bingoCnt += 1

if all(bingo[i][5-1-i] == 0 for i in range(5)):
        bingoCnt += 1

이런 식으로 가로, 세로, 왼쪽 대각선, 오른쪽 대각선을 확인한다.

코드

import sys
input = sys.stdin.readline

bingo = [list(map(int, input().rstrip().split())) for _ in range(5)]



def solve(num):
    bingoCnt = 0
    for i in range(5):
        for j in range(5):
            if bingo[i][j] == num:
                bingo[i][j] = 0
    

    for i in range(5):
        if len(set(bingo[i])) == 1:
            bingoCnt += 1
        
    for i in range(5):
        col = [row[i] for row in bingo]
        if len(set(col)) == 1:
            bingoCnt += 1
    
    if all(bingo[i][i] == 0 for i in range(5)):
        bingoCnt += 1

    if all(bingo[i][5-1-i] == 0 for i in range(5)):
        bingoCnt += 1

    return bingoCnt

s = 0 #위치 조사(행)
nums = []
for i in range(5):
    nums.append(list(map(int, input().rstrip().split())))

for i in range(5):
    for j in range(5):
        if solve(nums[i][j]) >= 3:
            print(s+1+j) #사회자가 몇번째 숫자를 불렀는가
            exit()
    s += 5
profile
임아리 - 대학생

0개의 댓글