[Refresh ! 코딩 테스트 / js] 게임 맵 최단거리

정대만·2025년 1월 9일

문제설명

  • 출발 [0,0] 도착 [arr.length. arr[0].length]
  • 코테에서는 느린 dfs 을 거의 사용하지 않음 bfs 으로 가면 무족건 빠른길을 얻을수 있음
  • 가는 방향에 따른 함수를 만들어야됨
  • 이때 갔던 곳으로 갈수 있으니 처음부터 갔던 곳은 더이상 안가게 만들어야됨
  • 사실 이거 2번정도 풀어봐서.. 금방 풀었다.

나의 풀이

function solution(maps) {
   // 예전에 풀었던 문제임
  var answer=0;
  var stack=[[[0,0],1]];
  var visited = Array.from({length:maps.length},()=> Array(maps[0].length).fill(0))
 
  var go_x =[-1,0,1,0];
  var go_y= [0,-1,0,1];
  visited[0][0]=1;


    //생각해보니 bfs 가 가장 빠르니 ... 그냥 가도될듯
  //start =[0,0]  end= maps.length, maps[0].length
   
    while(stack.length>0){
        // 하나빼기 
        let [go,count]= stack.shift();
     
       if (go[0] === maps.length - 1 && go[1] === maps[0].length - 1) {
    return count;
     }
        for(var i=0; i<4; i++){
            //update route
            let new_y=  go[0]+go_x[i]
            let new_x=  go[1]+go_y[i]
            // 갈수 있는지 확인
          
           if(new_y>=0 && new_y<maps.length && new_x>=0 && new_x<maps[0].length){ 
            if( maps[ new_y][new_x]==1 && visited[new_y][ new_x]==0){
                //갈수 있다는 의미임 
            
                visited[new_y][ new_x]= 1;
                stack.push([[new_y,new_x],count+1]);
            }
           }
        }
        
    }
    
    

    return -1
    
}
  • 처음에는 visited 에 여기까지 ~ 이 수로 갈수 있습니다. 하려고 했으나.. 생각해보니 그러면 stack에 넣은거랑 연관성이 없을거 같아서 처음부터
    stack에 [ 갈수 있는 방향, 현재 까지 count] 을 넣어놓았다.

다른 사람 풀이

졸려서 내일함...ㅎ

내코드와 비교

profile
안녕하세요

0개의 댓글