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

 

프로그래머스

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

programmers.co.kr

bfs로 문제를 구하는 방법은 정해져잇으니 외워두자 ~.~

 

function solution(maps) {
    var answer = 0;
    const n = maps.length;
    const m = maps[0].length;
    
    const directions = [[0, 1], [1, 0], [0, -1], [-1, 0]]; 
    const queue = [[0,0,1]]; //시작지점도 이동한걸로 보기 때문에 1 Q
    
    const visited = Array.from({length:n},()=>Array(m).fill(false));
    visited[0][0]=true;
    
    while(queue.length>0){
        let [x,y,dist]=queue.shift();
        
        if(x===n-1&&y===m-1)return dist;
        
        for(let [dx,dy] of directions){
            let nx = x+dx;
            let ny = y+dy;
            
            if(nx>=0 && nx<n && ny>=0 && ny<m && maps[nx][ny]!==0 && !visited[nx][ny]){
                  queue.push([nx,ny,dist+1]);//다시 이동한 위치 넣어줌 
                  visited[nx][ny]=true; //방문했으니 true로바꿈 
            }
              
        }
    }
    return -1;
}

+ Recent posts