728x90
https://school.programmers.co.kr/learn/courses/30/lessons/120866
지도를 순회하면서 지뢰인 경우, 8방향으로 위험지대임을 표시해주고, 이후 안전지대로 남아있는 부분의 개수를 세 주는 방식으로 해결하였다.
function solution(board) {
const n = board.length
const dx = [0,1,1,1,0,-1,-1,-1]
const dy = [-1,-1,0,1,1,1,0,-1]
for (let i=0;i<n;i++){
for (let j=0;j<n;j++){
if (board[i][j] !==1) continue
for (let k=0; k<8;k++){
const nx = j + dx[k]
const ny = i + dy[k]
if (0<=nx && nx<n && 0<=ny && ny<n && board[ny][nx]!==1){
board[ny][nx] = 2
}
}
}
}
return board.reduce((a,c) => a+c.reduce((a,c)=> c===0?a+1:a ,0),0);
}
728x90
'FrontEnd > 프로그래머스' 카테고리의 다른 글
[JS] 겹치는 선분의 길이 (0) | 2023.03.06 |
---|---|
[JS] 저주의 숫자 3 (0) | 2023.03.02 |
[JS] 캐릭터의 좌표 (0) | 2023.02.28 |
[JS] 7의 개수 (0) | 2023.02.26 |
[JS] 문자열 정렬하기 (2) (0) | 2023.02.26 |