본문 바로가기
알고리즘

[알고리즘/백준] 2578번 빙고 Python 파이썬

by 배애앰이 좋아 2023. 2. 23.
반응형

 

이 문제는 복잡해보이지만 쉽게 생각하면 어렵지 않은 문제이다.

 

 

몇번째 빙고가 되는지 출력해주는 문제로 빙고판과 사회자가 부르는 숫자가 주어진다. 처음에는 어렵다고 생각했다. 어떻게 빙고가 되었는지 확인해주지 BFS 써야하나 싶었는데 이건 빙고판 사이즈가 정해지지 않을 때 이야기고 해당 문제는 빙고판 사이즈가 정해져있기 때문에 5X5 빙고판 생각해서 상수로 검사해주면 싶게 풀린다.

 

다음과 같은 코드를 통해 통과하였다.

 

import sys
input = sys.stdin.readline

my_bingo = [list(map(int, input().split())) for _ in range(5)]
call_num = [list(map(int, input().split())) for _ in range(5)]
bo_check = [[0]*5 for _ in range(5)]
answer = 0

for i in range(5):
    for j in range(5):
        num = call_num[i][j]
        answer += 1
        for k in range(5):
            for p in range(5):
                if num == my_bingo[k][p]:
                    bo_check[k][p] = 1
        check_answer = 0
        for k in range(5):
            if bo_check[k][0]+bo_check[k][1]+bo_check[k][2]+bo_check[k][3]+bo_check[k][4] == 5:
                check_answer += 1
            if bo_check[0][k]+bo_check[1][k]+bo_check[2][k]+bo_check[3][k]+bo_check[4][k] == 5:
                check_answer += 1
        if bo_check[0][4]+bo_check[1][3]+bo_check[2][2]+bo_check[3][1]+bo_check[4][0] == 5:
            check_answer += 1
        if bo_check[0][0]+bo_check[1][1]+bo_check[2][2]+bo_check[3][3]+bo_check[4][4] == 5:
            check_answer += 1
        if check_answer >= 3:
            print(answer)
            exit(0)

 

문제를 너무 어렵게 보지 않고 쉽고 간단하게 볼려고 고려해서 풀어야할 거 같다.

 

반응형

댓글