[프로그래머스] Lv2. 무인도 여행 - JavaScript

이상돈·2023년 6월 28일
0
post-thumbnail

문제분류 : 코팅테스트 연습

난이도 : Level 2

출처 : 프로그래머스 - 무인도 여행

문제

제한사항

📌 내가 생각한 풀이

완전탐색을 이용하여 [0,0] 부터, [n,m]까지 탐색한후, DFS를 이용하여 'X'가 아닌곳을 다 방문하자. 방문된 뒤에는 'X'로 바꿔주고, 증가된 값을 answer에 push하여 sort하여 리턴하자.
function solution(maps) {
    var answer = [];
    let dx = [-1,1,0,0];
    let dy = [0,0,-1,1];
    let road = Array.from(Array(maps.length), ()=>Array(maps[0].length).fill(0))
    maps.forEach((data,idx)=>{
        data.split('').forEach((d,i)=>{
            road[idx][i] = d
        })
    })
    for(var i =0; i<road.length; i++){
        for(var k =0; k<road[i].length; k++){
            let count =0;
            if(road[i][k] !== 'X'){
                let needVisit = [[i,k]];
                while(needVisit.length){
                    let [x,y] = needVisit.pop();
                    if(road[x][y] !== 'X'){
                        count += parseInt(road[x][y])
                        road[x][y] = 'X';
                    }
                    for(var j = 0; j<4; j++){
                        let lX = x + dx[j];
                        let lY = y + dy[j];
                        if(lX < maps.length && lX>=0 && lY >= 0 && lY < maps[0].length && road[lX][lY] !== 'X'){
                            needVisit.push([lX,lY]);
                        }
                    }
                }
                answer.push(count)
            }else{
                continue;
            }
            
        }
    }
    return answer.length === 0 ?  [-1] : answer.sort((a,b)=>a-b)
}

📌 느낀점

sort()함수 중 안에 파라미터가 없을경우엔 오름차순이 된다는 보장이 없다. 문자열의 배열일 경우 ['100', '20']일때는 오름차순이 ['100', '20']으로 정렬이 된다.(앞자리가 1이고 2이므로) 따라서 파라미터를 이용하여 바꿔주는 습관을 기르자!!

profile
사람들의 더 나은 삶을 위한 개발자

0개의 댓글