function solution(board){
let answer = 0,
n = board.length,
dx = [-1,-1,0,1,1,1,0,-1],
dy = [0,1,1,1,0,-1,-1,-1];
function DFS(x, y){
board[x][y]=0;
for(let k=0; k<8; k++){
let nx= x+dx[k],
ny= y+dy[k];
if(nx>=0 && nx<n && ny>=0 && ny<n && board[nx][ny]===1){
DFS(nx,ny);
}
}
}
for(let i=0; i<n; i++){
for(let l=0; l<n; l++){
if(board[i][l]===1){
answer++;
DFS(i,l);
}
}
}
return answer;
}
let arr=[[1, 1, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 1, 1, 0],
[0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 1, 1],
[1, 1, 0, 1, 1, 0, 0],
[1, 0, 0, 0, 1, 0, 0],
[1, 0, 1, 0, 1, 0, 0]];
console.log(solution(arr));
2(DFS)
2-1. DFS(x, y)에서 board[x][y]를 0으로 바꾸어준다. [주의! 이 과정을 해주지 않으면 board의 값은 1로 남고만다.]
2-2. 위쪽 부터 시계방향으로 탐색할때 숫자가 없는 지역이 있을 수 있다.
그러므로 nx>=0 && nx<n && ny>=0 && ny<n 조건을 잊지 않는다.