board[y][x]가 0이면서 모든 방향에 지뢰가 없는 경우를 골라서 safe에 저장한다.
한 노드에서 인접한 모든 노드를 검색하는 알고리즘 즉, DFS/BFS 를 이용하여 문제를 풀었다.
if (board[y][x] === 0 ) {
let 지뢰 = 0;
for(let i =0; i<8; i++) {
// 모든 방향 체크
let ny = y + dy[i]
let nx = x + dx[i]
if ( (0 <= ny && ny < n ) && (0 <= nx && nx <n) ) {
if (board[ny][nx] === 1 ) {
지뢰++;
}
}
// 모두 확인했을때 1이 없다면
if (i===7 && 지뢰 === 0 ) safe++;
}
}
안전지대 완성코드
//그래프 탐색 문제 (BFS/DFS)
function solution(board) {
let safe = 0;
let n = board.length;
//방향
const dx = [-1,0,1,-1,1,-1,-0,1]
const dy = [-1,-1,-1,0,0,1,1,1 ]
//for문 - dfs
for (let y=0; y<n ; y++) {
for(let x=0;x<n;x++) {
if (board[y][x] === 0 ) {
let 지뢰 = 0;
for(let i =0; i<8; i++) {
// 모든 방향 체크
let ny = y + dy[i]
let nx = x + dx[i]
if ( (0 <= ny && ny < n ) && (0 <= nx && nx <n) ) {
if (board[ny][nx] === 1 ) {
지뢰++;
}
}
// 모두 확인했을때 1이 없다면
if (i===7 && 지뢰 === 0 ) safe++;
}
}
}
}
return safe;
}