n*n
배열에서 그림과 같이 폭탄 주위를 위험지역으로 분류하고, 위험지역이 아닌 땅을 세는 문제다.
폭탄은 n*n
에서 1로 표현되며 0은 일반 땅을 의미한다.
- 폭탄의 좌표를 배열에 임시로 저장
- 저장했던 폭탄 좌표를 꺼내, 주위 8방면을 위험 지역으로 설정
-> [-1, 0, 1]에 대해x, y
모두 고려
- 위험지역이 아닌 일반 지역 세고 출력
def solution(board):
answer = 0
n = len(board)
row, col = [-1, 0, 1], [-1, 0, 1]
bomb = []
for i in range(n):
for j in range(n):
if board[i][j] == 0:
continue
else:
bomb.append([i, j])
for i in range(len(bomb)):
x, y = bomb[i]
for r in row:
for c in col:
if x+r >= 0 and y+c >= 0:
try:
board[x+r][y+c] = 1
except:
continue
for i in board:
for j in i:
if j == 0:
answer += 1
return answer
1번 케이스를 실패했는데, x, y
에 -1 연산을 수행할 때, x, y
가 0인 경우를 고려하지 않아 뜬금없이 마지막 값이 수정되는 문제가 있었다.