프로그래머스 안전지대

이로운·2023년 5월 29일
0

파이썬

목록 보기
4/9

풀이

2차원 배열 표현

문제 안에서 고려해야할 방향은 상, 하, 좌, 우, 대각선까지 총 4갈래방향
x,y 좌표상에서 지뢰의 위치를 (0,0)이라고할때 고려할 수 있는 위치는
(1,0) : 상
(-1,0) : 하
(0,1) : 우
(0,-1) : 좌
(1,1) : 우상
(-1,1) : 좌상
(-1,-1) : 좌하
(1,-1) : 우하
총 8방향

코드

def solution(board):
    answer = 0
    # 사각형을 만들어주는 좌표 리스트
    N = len(board)
    # dx: x좌표에서 나올 수 있는 경우의 수 리스트
    dx = [-1,1,0,0,-1,-1,1,1]
    # dy: y좌표에서 나올 수 있는 경우의 수 리스트
    dy = [0,0,-1,1,-1,1,-1,1]
    
    # z : 지뢰가 설치된 곳
    z = []
    for x in range(N):
        for y in range(N):
        	# 배열에 지뢰인 좌표값을 찾아서 그 값을 z에 넣기
            if board[x][y] == 1:
                z.append((x, y))
                
    for x, y in z:
        for i in range(8):
            nx = x + dx[i] #주변 지뢰 x위치 배치
            ny = y + dy[i] #주변 지뢰 y위치 배치
            if 0<=nx<N and 0<=ny<N:
                board[nx][ny] = 1           
                
    for b in board:
        answer += b.count(0)
    
    return answer
profile
이름 값 하는 개발자가 꿈인 사람

0개의 댓글