문제 요약
[boj] 13305. 주유소 (node.js)
- 최종 도착지점까지 거쳐가는 구간 간의 거리와 주유소의 리터당 가격이 주어질 때,
- 첫 번째 도시에서 마지막 도시로 이동하는 최소 비용을 구하는 문제
풀이
- 그리디 알고리즘
- 출발하려면 첫 번째 도시에서 반드시 주유를 해야 하므로, 첫 번째 도시의 기름값을 초기값으로 설정한다. 계속 나아가며 그보다 더 작은 기름값을 갖는 곳이라면 가격을 낮춰 주유하고, 그렇지 않으면 기존의 기름값이 유지된다고 보면 된다.
- 서브태스크에 유의:
- 문제의 제약조건에서 명시된 거리의 최댓값과 리터당 최대 비용이 각각 1,000,000,000(10^9) 이하의 자연수이므로 최대 비용은 10^18이 된다.
- 따라서 BigInt 자료형을 활용한다.
내 풀이
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const solution = () => {
const N = input();
const distArr = input().split(" ").map(BigInt);
const priceArr = input().split(" ").map(BigInt);
let price = 1000000000n;
return distArr.reduce((sum, dist, idx) => {
if (BigInt(priceArr[idx]) < price) price = BigInt(priceArr[idx]);
return BigInt(sum) + BigInt(dist) * price;
}, 0n);
};
let line = 0;
const input = () => stdin[line++];
let stdin = [];
rl.on("line", function (line) {
stdin.push(line);
}).on("close", function () {
let result = solution();
console.log(result.toString());
process.exit();
});