[boj] 13305. 주유소 (node.js)

호이·2022년 3월 18일
0

algorithm

목록 보기
44/77
post-thumbnail

문제 요약

[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();
});
profile
매일 부활하는 개복치

0개의 댓글