빙고는 NxN 크기의 게임 보드 칸에 1부터 NxN까지의 자연수를 중복 없이 하나씩 적은 후 숫자를 하나씩 지워나가는 게임입니다. 이때, 가로, 세로, 대각선 방향으로 한 줄에 적힌 숫자를 모두 지울 경우 빙고를 1개 만들었다고 합니다.
다음은 4X4 크기의 게임 보드를 이용해 게임을 진행한 예시입니다.
위와 같이 각 칸에 숫자가 적혀 있을 때, 위 게임 보드에서 순서대로 지운 숫자가 [14,3,2,4,13,1,16,11,5,15]인 경우 아래와 같이 빙고 3개가 만들어집니다.
빙고 게임 보드에 적힌 숫자가 담겨있는 배열 board, 게임 보드에서 순서대로 지운 숫자가 들어있는 배열 nums가 매개변수로 주어질 때, board에서 nums에 들어있는 숫자를 모두 지우면 몇 개의 빙고가 만들어지는지 return하도록 solution함수를 완성해주세요.
제한사항
입출력 예
board | nums | result |
---|---|---|
[[11,13,15,16],[12,1,4,3],[10,2,7,8],[5,14,6,9]] | [14,3,2,4,13,1,16,11,5,15] | 3 |
[[6,15,17,14,23],[5,12,16,13,25],[21,4,2,1,22],[10,20,3,18,8],[11,9,19,24,7]] | [15,7,2,25,9,16,12,18,5,4,10,13,20] | 2 |
입출력 예 설명
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
다음 그림과 같이 2개의 빙고가 만들어집니다.
행,열,대각선을 판별하여 빙고 수를 카운트한다.
def solution(board, nums):
answer = 0
d = {}
for i in range(len(board)):
for j in range(len(board)):
d[board[i][j]] = [i,j]
for n in nums:
r = d[n][0]
c = d[n][1]
board[r][c] = 0
# 행 판별
for i in range(len(board)):
for j in range(len(board)):
if board[i][j] != 0:
break
else:
answer += 1
# 열 판별
for i in range(len(board)):
for j in range(len(board)):
if board[j][i] != 0:
break
else:
answer += 1
# 대각선1
for i in range(len(board)):
if board[i][i] != 0:
break
else:
answer += 1
# 대각선2
for i in range(len(board)):
if board[i][len(board)-i-1] != 0:
break
else:
answer += 1
return answer