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 |