백준 13305번 주유소 Node.js 풀이

버건디·2024년 1월 18일
0

백준

목록 보기
66/75
post-thumbnail

문제 링크


- 내 풀이

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

const N = Number(input[0]);

let cityDistanceArr = input[1].split(" ").map(Number);

let oilPriceArr = input[2].split(" ").map(Number);

let answer = BigInt(0);

let minValue = Number.MAX_SAFE_INTEGER;

for (let i = 0; i < N; i++) {
  if (oilPriceArr[i] < minValue) {
    minValue = oilPriceArr[i];
  } else if (oilPriceArr[i] > minValue) {
    oilPriceArr[i] = minValue;
  }
}

for (let i = 0; i < N - 1; i++) {
  answer += BigInt(cityDistanceArr[i]) * BigInt(oilPriceArr[i]);
}

console.log(answer.toString());

여기서 핵심은 가장 리터당 기름 가격이 저렴한 도시는 최대한 많이 가주어야하고,

가장 비싼 도시라면 최대한 짧게 가주어야한다는 것이다.

반복문을 돌면서 리터당 기름이 가장 적은 도시라면, 다음 도시들도 더 작은 기름 값을 가진 도시를 만나기 전까지는 해당 기름 가격으로 바꾸어준다.

그리고 제한사항이 10억까지의 숫자가 들어올수 있으니 BigInt형의 자료형을 사용해서 계산해준다.

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글