Muscardinus

배달 본문

알고리즘 문제/[프로그래머스] Lv2

배달

Muscardinus 2022. 4. 4. 13:02
728x90

https://programmers.co.kr/learn/courses/30/lessons/12978

 

코딩테스트 연습 - 배달

5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4

programmers.co.kr

다익스트라 사용

function solution(N, road, K) {
    const r = Array.from(new Array(N + 1), () => []);
    const cost = new Array(N + 1).fill(Infinity);
    const pq = [];
    road.forEach(([from, to, w]) => {
        r[from].push({to, w});
        r[to].push({to: from, w});
    });
    cost[1] = 0;
    pq.push({to: 1, w: 0});
    
    while (pq.length) {
        pq.sort((a, b) => a.w - b.w);
        const { to, w } = pq.pop();
        
        for (let i = 0; i < r[to].length; i++) {
            const next = r[to][i];
            if (cost[next.to] > cost[to] + next.w) {
                cost[next.to] = cost[to] + next.w;
                pq.push(next);
            }
        }
    }
    return cost.filter((v) => v <= K).length;
}
728x90

'알고리즘 문제 > [프로그래머스] Lv2' 카테고리의 다른 글

2개 이하 다른 비트  (0) 2022.04.05
피로도  (0) 2022.04.04
괄호 회전하기  (0) 2022.04.03
빛의 경로 사이클  (0) 2022.04.02
주차 요금 계산  (0) 2022.04.01
Comments