[Javascript : programmers] 안전지대 (Lv.0) 💥
문제
나의 정답 풀이
function solution(board) {
let n = board.length;
let danger = [[-1,0],[-1,1],[-1,-1],[0,1],[0,-1],[1,1],[1,0],[1,-1]];
for(let i=0; i<n; i++){
for(let j=0; j<n; j++){
if(board[i][j]==1){
danger.map(([x,y])=> {
if(x+i>=0 && x+i<n && y+j>=0 && y+j<n && board[x+i][y+j]==0) board[x+i][y+j] = 2;
});
}
}
}
return board.reduce((acc,cur)=>acc+=cur.filter(e=>e==0).length,0);
}
위험한 지역은 상하좌우, 대각선 모두 +1/-1 을 해줘야 하기 때문에 위험지역을 나타내는 8 구역을 2차원 배열로 저장한다.
n*n 의 board 배열을 이중 for문으로 돌면서 원소의 값이 1이라면, danger 배열을 map으로 돌면서 board의 인덱스 i, j 에 danger 좌표를 더한 인덱스가 0과 n-1 사이이고, 값이 0인 원소들을 2로 바꾼다.
이렇게 바꾼 board의 배열에서 0인 값의 개수를 세서 반환한다.
'Javascript > 자바스크립트 문제' 카테고리의 다른 글
[Javascript : programmers] 평행 (Lv.0) (0) | 2024.08.31 |
---|---|
[Javascript : programmers] 겹치는 선분의 길이 (Lv.0) (0) | 2024.08.31 |
[Javascript : programmers] 연속된 수의 합 (Lv.0) (0) | 2024.08.31 |
[Javascript : programmers] 특이한 정렬 (Lv.0) 💥 (0) | 2024.08.30 |
[Javascript : programmers] 다음에 올 숫자 (Lv.0) (0) | 2024.08.30 |