본문 바로가기
개발공부 일지/코테

프로그래머스 - 안전지대 (JS, 자바스크립트)

by Box Cat 2023. 2. 1.
728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const disX = [-1-1-100111];
const disY = [-101-11-101];
function solution(board) { 
    let length = board.length
    let dangerZone = JSON.parse(JSON.stringify(board)); //배열의 깊은 복사.
    //얕은 복사: 복사본 변경시, 원본도 바뀐다. 깊은 복사: 복사본 변경해도, 원본이 그대로이다.
    for(let x=0;x<board.length;x++){ //전체 스캔
        for(let y=0;y<board.length;y++){
            if(board[x][y]===0continue//폭심지가 0이면 무시
            for(let i=0;i<disX.length;i++){ //폭탄인근좌표, 구하기
                let nx = x + disX[i];
                let ny = y + disY[i];
                if(nx < 0 || nx >= board.length || ny < 0 || ny >= board[0].lengthcontinue;
                // board 좌표 벗어나면 무시
                // nx, ny에서 =이 들어간 이유는, board가 배열이기 때문이다.
                // 배열의 위치는 0부터 세고, 마지막 배열 위치는 arr.length-1로 표현해야 한다.
                dangerZone[nx][ny] = 1// 폭탄 주위 좌표는 모두 1로 채움
            }
        }
    }
    return length*length-dangerZone.flat().filter(d => d).length;
}
cs
728x90
반응형

댓글