import copy
def solution(board):
bomb = []
n = len(board)
for i in range(n):
for j in range(n):
if board[i][j] == 1:
bomb.append([i, j])
if len(bomb) == n*n:
return 0
danger = set()
for p in bomb:
danger.add((p[0]-1, p[1]-1))
danger.add((p[0]-1, p[1]))
danger.add((p[0], p[1]-1))
danger.add((p[0], p[1]))
danger.add((p[0]+1, p[1]+1))
danger.add((p[0]+1, p[1]))
danger.add((p[0], p[1]+1))
danger.add((p[0]-1, p[1]+1))
danger.add((p[0]+1, p[1]-1))
danger_copy = copy.deepcopy(danger)
for p in danger:
if p[0] > n-1 or p[0] < 0 or p[1] > n-1 or p[1] < 0:
danger_copy.remove(p)
answer = (n*n) - len(danger_copy)
return answer
- 다른 풀이도 봤지만 직관적으로 이해가 잘 되지 않아서… 나는 그냥 지뢰를 찾고, 위험지대를 체크하고, 그라운드를 벗어나는 범위를 삭제하는 순서의 직관적인 풀이로 풀었다. 😅
1 ≤ n ≤ 100
이라는 조건도 있고, 레벨 0이니까…^^;; 혹시라도 보시는 분들은 참고만 하시길…ㅎㅎ
- 위치를 지정하는데 사용한 것이 인덱스이므로 그라운드의 범위를
p[0] > n
이 아닌 p[0] > n-1
로 체크해야한다는 것을 주의해야 한다.
Related