우주먼지 개발 log

[javascript] 프로그래머스, 게임 맵 최단거리 (BFS) 본문

programmers

[javascript] 프로그래머스, 게임 맵 최단거리 (BFS)

개발자먼지 2024. 3. 13. 18:59
반응형

세가지 개발자 본인 입맛대로 구현한,, BFS 코드

 

https://mocha-blog.tistory.com/227

https://yjg-lab.tistory.com/375 

https://jsikim1.tistory.com/311

 

골자는 같다.

 

1. 큐의 구현
 - (일단만들지 않고 배열을 사용, shift 연산을 사용하여 queue 처럼 사용)

2. BFS의 동작 부분

 - 첫 좌표를 큐에 넣어주고

 - while 문으로 큐가 빌 때까지 반복

 - 무엇을 반복하느냐 ? 상,하,좌,우 살피기

- 살필 때 주의할 부분 작성 : 배열을 벗어나는 부분이 없도록

- 큐에서 꺼낸 값이 마지막 좌표에 도달하면 답으로 체크

 

 

마지막 친구꺼 참조하여 타임어택으로 다시 짜봤는데 망함 ㅇ0ㅇ

- javascript 코드 작성시 오타에 극히 주의 할 것 ㅠ.ㅠ

- 특히 length ^.^ lenght 로 썼는데 동작이 다름이 없는데 안되서, 오타찾느라 한세월 걸림

function solution(maps) {
    var answer = 0;
    const queue = [];
    const dx = [0, 0, -1, 1];
    const dy = [1, -1, 0, 0];
    queue.push([0, 0, 1]);

     while(queue.length) {
        const [curX, curY, count] = queue.shift();
   
        if(curX===maps.length-1 && curY===maps[0].length-1) return count;
        
        for(let i=0; i<4; i++ ){
            let nx = curX+dx[i];
            let ny = curY+dy[i];
            
            
            if(nx >= 0 && nx < maps.length && ny >= 0 && ny < maps[0].length && maps[nx][ny]===1 ) {
                queue.push([nx,ny, count+1]);
                maps[nx][ny] = 0;
            }
        }
         
    }
    
    return -1;
}
반응형