FrontEnd/프로그래머스

[JS] 안전지대

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/120866

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

지도를 순회하면서 지뢰인 경우, 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