1) nums의 원소를 key로 defaultdict 생성
2) 가로, 세로, 대각선 두개를 나타내는 빙고 딕셔너리 생성
3) board를 순회 (이중 for문)
4) 이중 for문이 끝나면 bingo.items() 순회 (for문)
5) 가로, 세로, 대각선 2개의 원소를 순회(for문)
6) 5번의 원소가 board의 길이와 같으면 answer += 1
7) 4번, 5번의 이중 for문이 끝나면 answer 리턴
from collections import defaultdict
def solution(board, nums):
N = len(board)
dic = defaultdict(int)
bingo = {'row': [[] for _ in range(N)], 'col': [[] for _ in range(N)], 'diagonal': [[], []]}
answer = 0
for num in nums:
dic[num] += 1
for row in range(N):
if dic[board[row][row]]:
bingo['diagonal'][0].append(1)
if dic[board[row][N - 1 - row]]:
bingo['diagonal'][1].append(1)
for col in range(N):
if dic[board[row][col]]:
bingo['row'][row].append(1)
bingo['col'][col].append(1)
else:
for _, val in bingo.items():
for cnt in val:
if len(cnt) == N:
answer += 1
return answer