[백준] 1049 기타줄 Node.js (Greedy)

Janet·2023년 7월 10일
0

Algorithm

목록 보기
245/314

문제

🔗 1049번: 기타줄


문제풀이

💡 문제풀이 과정

  • 문제 설명에는 명시되어 있지는 않지만, 꼭 한 가지 브랜드의 기타줄만 사야하는 것은 아니다. 패키지 구매와 낱개 구매를 각각 다른 브랜드에서 구매해도 가능하다.
  • 구매 조합은 3가지가 있다.
    • 패키지로만 구매
    • 낱개로만 구매
    • 패키지+낱개 섞어서 구매
  • 브랜드 중에 가장 저렴한 패키지의 가격가장 저렴한 낱개 가격을 구하기 위해 sort()를 활용했다.

✅ 답안

const filePath = process.platform == 'linux' ? '/dev/stdin' : './input.txt';
let [n, ...input] = require('fs').readFileSync(filePath).toString().trim().split('\n');
const [N, M] = n.split(' ').map(Number);
input = input.map((v) => v.split(' ').map(Number)).sort((a, b) => a[0] - b[0]);
const minPackagePrice = input[0][0];
input.sort((a, b) => a[1] - b[1]);
const minUnitPrice = input[0][1];

const onlyPackage = Math.ceil(N / 6) * minPackagePrice;
const onlyUnit = minUnitPrice * N;
const mix = Math.floor(N / 6) * minPackagePrice + (N % 6) * minUnitPrice;

console.log(Math.min(onlyPackage, onlyUnit, mix));
profile
😸

0개의 댓글