import sys

n_input = sys.stdin.readline

graph = [list(map(int, n_input().split())) for _ in range(5)]
bingo = [list(map(int, n_input().split())) for _ in range(5)]
# 입력 받은 그래프와 빙고 숫자 리스트 생성합니다.

visited = [[0] * 5 for _ in range(5)]
# 각 그래프 요소를 방문한 여부를 나타내는 이차원 리스트 생성합니다


def check(): # 빙고 개수를 확인합니다
    count = 0
       
    count += sum(all(visited[x]) for x in range(5))  # 가로 빙고 개수 확인합니다
       
    col_visited = list(map(list, zip(*visited))) # zip 함수는 Python의 내장 함수로 행과 열을 분리합니다.
    count += sum(all(col_visited[y]) for y in range(5))  # 세로 빙고 개수 확인합니다.
   
    if all(visited[i][i] for i in range(5)):
        count += 1
    if all(visited[i][4 - i] for i in range(5)):
        count += 1
    # 대각선 빙고 개수 확인합니다
   
    return count >= 3

n_count = 0
for x in bingo:
    while x:
        num = x.pop(0)
        n_count += 1
        for i in range(5):
            for j in range(5):
                if graph[i][j] == num:
                    visited[i][j] = True

        if n_count >= 5 and check():
            # 5번부터 1 bingo를 만듭니다, 그 때부터 빙고 개수 체크합니다.
            print(count)
            sys.exit(0) #프로그램을 종료하는데 사용되는 함수입니다.

 

'코딩 연습 > 백준 코드' 카테고리의 다른 글

제로-10773.py  (0) 2023.10.18
접미사 배열-11656.py  (0) 2023.10.18
블랙잭-2798.py  (0) 2023.10.18
세로읽기-10798.py  (0) 2023.10.18
수강신청-13414.py  (0) 2023.10.18

+ Recent posts