다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다.
지뢰는 2차원 배열 board
에 1로 표시되어 있고 board
에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다.
지뢰가 매설된 지역의 지도 board
가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return하도록 solution 함수를 완성해주세요.
board
board
board | result |
---|---|
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0]] | 16 |
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 1, 0], [0, 0, 0, 0, 0]] | 13 |
[[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]] | 0 |
입출력 예 #1
입출력 예 #2
입출력 예 #3
def solution(board):
answer = 0
pos = []
for idr, row in enumerate(board):
for idc, col in enumerate(row):
if col == 1:
pos.append([idr, idc])
cnt = 0
for i in board:
for j in i:
if j == 1:
cnt += 1
if cnt == len(board)**2:
return 0
print(pos)
for po in pos:
x = po[0]
y = po[1]
# print(x, y)
if y == len(board[0])-1:
# 오른쪽 위
if x == 0 and y == len(board[0])-1:
board[x+1][y] = 1
board[x][y-1] = 1
board[x+1][y-1] = 1
# 오른쪽 끝
elif x < len(board[0])-1 and x > -1 and y == len(board[0])-1:
# 왼쪽 아래
board[x+1][y-1] = 1
#
board[x-1][y-1] = 1
# 왼쪽
board[x][y-1] = 1
# 아래
board[x+1][y] = 1
board[x-1][y] = 1
elif x == len(board[0])-1:
board[x-1][y] = 1
board[x-1][y-1] = 1
board[x][y-1] = 1
elif 0 < y < len(board[0])-1:
# 맨 위
if x == 0:
board[x][y+1] = 1
board[x][y-1] = 1
board[x+1][y+1] = 1
board[x+1][y] = 1
board[x+1][y-1] = 1
# 맨 아래
elif x == len(board[0])-1:
board[x][y-1] = 1
board[x][y+1] = 1
board[x-1][y-1] = 1
board[x-1][y+1] = 1
board[x-1][y] = 1
elif x > 0 and x < len(board[0])-1:
board[x+1][y] = 1
board[x-1][y] = 1
board[x][y+1] = 1
board[x][y-1] = 1
board[x+1][y+1] = 1
board[x-1][y-1] = 1
board[x-1][y+1] = 1
board[x+1][y-1] = 1
elif y == 0:
# 왼쪽
if x > 0 and x < len(board[0])-1:
board[x+1][y] = 1
board[x-1][y] = 1
board[x+1][y+1] = 1
board[x-1][y+1] = 1
board[x][y+1] = 1
# 왼쪽 아래
elif x == len(board[0])-1:
board[x-1][y] = 1
board[x][y+1] = 1
board[x-1][y+1] = 1
elif x == 0:
board[x+1][y+1] = 1
board[x+1][y] = 1
board[x][y+1] = 1
cnt = 0
for bo in board:
cnt += bo.count(1)
return len(board)**2 - cnt
https://school.programmers.co.kr/learn/courses/30/lessons/120866?language=python3