백준 1049번 - 기타줄 (S4, JS, Greedy)
const fs = require('fs');
const input = fs.readFileSync('test.txt').toString().trim().split('\n');
const [N, M] = [...input[0].split(' ')];
const arr = [...input.slice(1)];
const packages = 6;
function solution(N, M, arr) {
let package = [];
let single = [];
arr.forEach((a) => {
const [p, s] = a.split(' ').map(Number);
package = [...package, p]; // 6개 패키지 가격 배열
single = [...single, s]; // 한 개 가격 배열
});
// 각 배열의 최솟값
let [singleMin, packageMin] = [Math.min(...single), Math.min(...package)];
// packages(===6)보다 적은 개수의 기타줄이 필요하다면
if (packages > N) {
// 1개 * (필요한개수) 와 패키지(6개)를 비용 중 더 싼 것
if (singleMin * N <= packageMin) {
return singleMin * N;
} else {
return packageMin;
}
} else {
// packages(===6)이상 개수의 기타줄이 필요하다면
// 단일가격 * 필요한 개수, 패키지 , 단일 + 패키지 가격중 가장 싼 것
return Math.min(
singleMin * N,
packageMin * Math.ceil(N / packages),
singleMin * (N % packages) + packageMin * parseInt(N / packages),
);
}
}
console.log(solution(N, M, arr));