다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다.
지뢰는 2차원 배열 board
에 1로 표시되어 있고 board
에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다.
지뢰가 매설된 지역의 지도 board
가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return하도록 solution 함수를 완성해주세요.
function solution(board) {
const dx = [-1, 1, 0, 0, -1, -1, 1, 1];
const dy = [0, 0, -1, 1, -1, 1, -1, 1];
// 지뢰가 설치된 곳
const bomb = [];
for (let x = 0; x < board.length; x++) {
for (let y = 0; y < board.length; y++) {
if (board[x][y] === 1) {
bomb.push([x, y]);
// console.log(bomb)
}
}
}
// 지뢰가 설치된 곳 주변에 폭탄 설치
bomb.forEach(([x, y]) => {
for (let i = 0; i < 8; i++) {
const nx = x + dx[i];
const ny = y + dy[i];
if (0 <= nx && nx < board.length && 0 <= ny && ny < board.length) {
board[nx][ny] = 1;
}
}
})
// 폭탄이 설치되지 않은 곳만 카운트
let count = 0;
for (let x = 0; x < board.length; x++) {
for (let y = 0; y < board.length; y++) {
if (board[x][y] === 0) {
count++;
}
console.log(board[x][y])
}
}
return count;
}
forEach 부분 코드가 잘 이해가 안된다... 😩