프로그래머스 - LV.0 - 안전지대

박종일·2023년 7월 31일
0

프로그래머스 LV.0

목록 보기
25/46

나의 풀이

def solution(board):
    answer = 0

    for col in range(len(board)):
        for row in range(len(board[col])):
            if board[row][col] == 1:
                for j in range(max(col-1,0),min(col+2,len(board))):
                    for i in range(max(row-1,0),min(row+2,len(board))):
                        if board[i][j] == 1:
                            continue
                        board[i][j] = -1
    for i in board:
        answer += i.count(0)

    return answer

다른 풀이

from collections import deque
def solution(board):
    n=len(board)
    q=deque()
    ans=0
    for y in range(n):
        for x in range(n):
            if board[y][x]:
                q.append((x,y))
    while q:
        x,y=q.popleft()
        for dx,dy in [(0,1),(0,-1),(1,0),(-1,0),(1,1),(-1,-1),(1,-1),(-1,1)]:
            nx=x+dx
            ny=y+dy
            if 0<=nx<n and 0<=ny<n and not board[ny][nx]:
                board[ny][nx]=1
    for y in range(n):
        for x in range(n):
            if not board[y][x]:
                ans+=1
    return ans

min - max 범위를 벗어나지 않는 것이 포인트인 문제!
LV0 이지만 BFS 개념을 알아야하는 문제였다!

profile
존경하는 인물: 스토브리그 백승수 단장(남궁민)

1개의 댓글

comment-user-thumbnail
2023년 7월 31일

글 잘 봤습니다.

답글 달기