Posts [알고리즘] 프로그래머스 - 빙고
Post
Cancel

[알고리즘] 프로그래머스 - 빙고


문제

N x N 보드판에서 빙고를 하자.
주어지는 수를 모두 지운 후 몇 빙고인지 구하라.
N 은 2이상 500이하의 자연수
board의 각 칸에는 1이상 NxN 이하의 자연수가 중복없이 들어 있다.
nums는 지울 숫자가 들어있는 배열이며, 길이는 1이상 NxN 이하이다.
nums에 들어 있는 숫자는 1이상 NxN이하의 자연수이며, 중복은 없다.


입출력 예시

boardnumsresult
[[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


접근

빙고판에서 우선 주어지는 수들을 제거하자.
빙고 계산을 위해 지워진 칸은 0으로 만들어준다.
그 후 보드를 순회하며 가로, 세로, 대각선의 합을 구해 빙고여부를 판단한다.


코드

  • 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def solution(board, nums):
    dic = {board[i][j] : [i,j] for i in range(len(board))
          for j in range(len(board))}
    for num in nums:
        i, j = dic[num]
        board[i][j] = 0
    inDiagonal = 0
    deDiagonal = 0
    answer = 0
    for i in range(len(board)):
        width = 0
        height = 0
        for j in range(len(board)):
            width += board[i][j]
            height += board[j][i]
            if i == j:
                inDiagonal += board[i][j]
            if j == len(board) - i - 1:
                deDiagonal += board[i][j]
        if width == 0:
            answer += 1
        if height == 0:
            answer += 1          
    if inDiagonal == 0:
        answer += 1
    if deDiagonal == 0:
        answer += 1
    return answer


This post is licensed under CC BY 4.0 by the author.

[알고리즘] 프로그래머스 - 게임아이템

[알고리즘] 프로그래머스 - N-Queen