Software

(프로그래머스 JS)게임 맵 최단거리 본문

프로그래머스 알고리즘/2단계

(프로그래머스 JS)게임 맵 최단거리

favorcom 2021. 5. 12. 16:28
728x90
반응형

programmers.co.kr/learn/courses/30/lessons/1844?language=javascript

 

코딩테스트 연습 - 게임 맵 최단거리

[[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1

programmers.co.kr

function solution(maps) {
    let answer = 1;
    const visited = maps;
    const queue = [];
    const directX = [-1, 1, 0, 0];
    const directY = [0, 0, -1, 1];
    const n = maps.length;
    const m = maps[0].length;
    
    queue.push([0, 0]);
    visited[0][0] = 0;
    
    while(queue.length > 0){
        const size = queue.length;
        
        for(let i = 0; i < size; i++){
            const [x, y] = queue.shift();
            
            for(let j = 0; j < 4; j++){
                const nx = x + directX[j];
                const ny = y + directY[j];

                if(nx >= 0 && nx < n && ny >= 0 && ny < m && visited[nx][ny] === 1){
                    if(nx == n - 1 && ny == m - 1){
                        return ++answer;
                    }
                    queue.push([nx, ny]);
                    visited[nx][ny] = 0;
                }
            }    
        }
        answer++;
    }
    
    return -1;
}
728x90
반응형