백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 24479 , 지름길
풀이 시간
Check Point ! ( 해당사항 ✓체크 )
1. 막힘 없이 수월하게 풀린 문제인가?
2. 1시간이내로 풀렸던 문제인가?
3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
4. 시간을 써도 도무지 풀 수 없는 문제인가?
5. 솔루션을 찾아봤는가?
-------------------------------------------------------------------------------------------
난이도 체감
1. 최상
2. 상
3. 중
4. 하
<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함
<덧붙일 말>
JS 푸는거 뭔가 겁나 재밌다 !! ㅋㅋ 어지간하면 함수형으로 풀려고 한다.
문제 출처
https://www.acmicpc.net/problem/1446
1446번: 지름길
첫째 줄에 지름길의 개수 N과 고속도로의 길이 D가 주어진다. N은 12 이하인 양의 정수이고, D는 10,000보다 작거나 같은 자연수이다. 다음 N개의 줄에 지름길의 시작 위치, 도착 위치, 지름길의 길이
www.acmicpc.net
정답
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
const dijkstra = (start) => {
for (let [next, cost] of graph[start]) {
if (dist[next] > dist[start] + cost) {
dist[next] = dist[start] + cost;
}
}
return;
};
const [N, D] = input.shift().split(" ").map(Number);
const graph = [...new Array(D + 1)].map(() => []);
const dist = [...new Array(D + 1)].fill(Infinity);
for (let i = 0; i < N; i++) {
const [start, end, len] = input.shift().split(" ").map(Number);
if (end > D) continue;
if (end - start > len) {
graph[start].push([end, len]);
}
}
let tmp = -1;
for (let j = 0; j < D + 1; j++) {
if (j > 0) tmp = dist[j - 1];
dist[j] = Math.min(dist[j], tmp + 1);
if (graph[j].length > 0) dijkstra(j);
}
console.log(dist[D]);
반응형
'알고리즘 공부 > 백준 - 자바스크립트' 카테고리의 다른 글
백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 1946 , 신입 사원 [정렬] (0) | 2022.09.06 |
---|---|
백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 1015 , 수열 정렬 [정렬] (0) | 2022.09.06 |
백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 24479 , 알고리즘 수업 - 깊이 우선 탐색 1 (0) | 2022.09.05 |
백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 5567 , 결혼식 (0) | 2022.09.05 |
백준/ Silver 5 문제 , 백준 Node.js 자바스크립트 9037 , The candy war (0) | 2022.09.04 |