class Solution {
public int solution(int[][] board) {
int n = board.length;
boolean[][] dangerZone = new boolean[n][n];
int safeCount = n * n;
int[] dx = {-1, 1, 0, 0, -1, -1, 1, 1};
int[] dy = {0, 0, -1, 1, -1, 1, -1, 1};
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(board[i][j] == 1) {
if(!dangerZone[i][j]) {
dangerZone[i][j] = true;
safeCount--;
}
for(int d = 0; d < 8; d++) {
int ni = i + dx[d];
int nj = j + dy[d];
if(ni >= 0 && ni < n && nj >= 0 && nj < n && !dangerZone[ni][nj]) {
dangerZone[ni][nj] = true;
safeCount--;
}
}
}
}
}
return safeCount;
}
}
겹치는 부분을 처리할 방법이 딱히 떠오르지가 않았음...
GPT 가 boolean 배열을 만들어서 체크해보라고 알려줌...
고마움...