반응형
    
    
    
  
                              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
                            
                        
                          
                          - 타입 챌린지
- BFS
- dp
- HTTP 완벽 가이드
- 문자열
- javascript
- TCP
- ip
- 프로그래머스 레벨 2
- 그래프
- 프로그래머스
- Node.js
- 수학
- Crawling
- 소켓
- typescript
- 가천대
- socket
- Algorithm
- 알고리즘
- dfs
- Nestjs
- 백준
- HTTP
- type challenge
- 크롤링
- 레벨 1
- 자바스크립트
- 타입스크립트
- 쉬운 문제
                            Archives
                            
                        
                          
                          - Today
- Total
kakasoo
[node.js] 배달 ( 프로그래머스 레벨2 ) 본문
반응형
    
    
    
  // 프로그래머스 레벨2 배달을 풀었습니다.
const makeMap = (N, road) => {
    const map = new Array(N).fill(false);
    for (let i = 0; i < N; i++) {
        map[i] = new Array(N).fill(null);
    }
    for (let i = 0; i < road.length; i++) {
        const [from, to, value] = road[i];
        if (!map[from - 1][to - 1] || map[from - 1][to - 1] > value) {
            map[from - 1][to - 1] = value;
            map[to - 1][from - 1] = value;
        }
    }
    return map;
};
const solution = (N, road, K) => {
    const map = makeMap(N, road);
    const visited = new Array(N).fill(0);
    const bfs = (start) => {
        const queue = [start];
        visited[start] = 0;
        while (queue.length) {
            const cur = queue.pop();
            for (let i = 0; i < map[cur].length; i++) {
                if (i === 0) {
                    continue;
                }
                const value = map[cur][i];
                if (value === null || value === false) {
                    continue;
                }
                if (!visited[i] || visited[i] > visited[cur] + map[cur][i]) {
                    visited[i] = visited[cur] + map[cur][i];
                    queue.push(i);
                }
            }
        }
    };
    bfs(0);
    return visited.filter((el) => el <= K).length || 1;
};
반응형
    
    
    
  '프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
| [node.js] 메뉴 리뉴얼 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 | 
|---|---|
| [node.js] 뉴스 클러스터링 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 | 
| [node.js] 예상 대진표 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 | 
| [node.js] 게임 맵 최단 거리 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 | 
| [node.js] 수식 최대화 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 | 
 
                   
                   
                  