반응형
    
    
    
  
                              Notice
                              
                          
                        
                          
                          
                            Recent Posts
                            
                        
                          
                          
                            Recent Comments
                            
                        
                          
                          
                            Link
                            
                        
                    | 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | 
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 
| 26 | 27 | 28 | 29 | 30 | 31 | 
                            Tags
                            
                        
                          
                          - Nestjs
- 프로그래머스
- 타입 챌린지
- dfs
- socket
- 타입스크립트
- Algorithm
- HTTP 완벽 가이드
- 알고리즘
- typescript
- dp
- TCP
- HTTP
- 백준
- javascript
- 문자열
- 소켓
- 레벨 1
- 그래프
- 프로그래머스 레벨 2
- type challenge
- BFS
- Node.js
- 수학
- 자바스크립트
- 쉬운 문제
- 가천대
- ip
- Crawling
- 크롤링
                            Archives
                            
                        
                          
                          - Today
- Total
kakasoo
[node.js] 게임 맵 최단 거리 ( 프로그래머스 레벨2 ) 본문
반응형
    
    
    
  // 프로그래머스 레벨2 게임 맵 최단 거리를 풀었습니다.
const solution = (maps) => {
    if (!maps[0][0]) {
        return -1;
    }
    const visited = new Array(maps.length);
    for (let i = 0; i < visited.length; i++) {
        visited[i] = new Array(maps[0].length).fill(0);
    }
    const xMove = [0, 0, -1, 1];
    const yMove = [1, -1, 0, 0];
    const bfs = (startY, startX) => {
        const queue = [{ y: startY, x: startX }];
        visited[startY][startX] = 1;
        while (queue.length) {
            const { y, x } = queue.shift();
            for (let i = 0; i < 4; i++) {
                const nextY = y + yMove[i];
                const nextX = x + xMove[i];
                if (
                    0 <= nextY &&
                    nextY < maps.length &&
                    0 <= nextX &&
                    nextX < maps[0].length
                ) {
                    if (maps[nextY][nextX] && !visited[nextY][nextX]) {
                        visited[nextY][nextX] = visited[y][x] + 1;
                        queue.push({ y: nextY, x: nextX });
                    }
                }
            }
        }
    };
    bfs(0, 0);
    const answer = visited[maps.length - 1][maps[0].length - 1];
    return answer ? answer : -1;
};
반응형
    
    
    
  '프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
| [node.js] 배달 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 | 
|---|---|
| [node.js] 예상 대진표 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 | 
| [node.js] 수식 최대화 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 | 
| [node.js] 신규 아이디 추천 ( 프로그래머스 레벨1 ) (0) | 2021.06.30 | 
| [node.js] 로또의 최고 순위와 최저 순위 ( 프로그래머스 레벨1 ) (0) | 2021.06.30 | 
 
                   
                   
                  