728x90
문제
https://www.acmicpc.net/problem/5972
풀이
다익스트라다와 BFS 알고리즘을 이용한 문제이며, 필자는 큐를 이용한 풀이를 진행했다.
1번부터 시작하며 큐에 시작하는 위치를 저장하고 순회를 시작한다. 순회하며 각 지점에 도달하기 까지의 최소 비용을 측정한다. 최단 거리의 경우 st 지점부터 ed 지점까지 소요되는 비용을 더하며 최소 비용을 구한다.
코드
const input = require('fs')
.readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt')
.toString().trim().split('\n').map(e => e);
const [n, m] = input.shift().split(' ').map(Number);
const arr = input.map(e => e.split(' ').map(Number));
const road = Array.from({ length: n + 1 }, () => []);
const cost = Array.from({ length: n + 1 }, () => Infinity);
const que = [1];
cost[1] = 0;
arr.forEach(([st, ed, co], i) => {
road[st].push([ed, co]);
road[ed].push([st, co])
})
while (que.length > 0) {
const cur = que.shift();
for (let i = 0; i < road[cur].length; i++) {
const [ed, co] = road[cur][i];
if (ed !== 1 && cost[ed] > cost[cur] + co) {
cost[ed] = cost[cur] + co;
que.push(ed);
}
}
}
console.log(cost[n]);
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[JS] 벌집 (0) | 2024.10.30 |
---|---|
[JS] 수들의 합2 (0) | 2024.10.26 |
[JS] 돌 게임 (0) | 2024.09.26 |
[JS] 탑 문제 (0) | 2024.09.23 |
[JS] 2230번 수 고르기 (0) | 2024.08.29 |