문제 링크
풀이
const input = require("fs").readFileSync("/dev/stdin").toString().trim().split(/\s/);
const n = +input[0];
const m = +input[1];
const arr = input.slice(2).map(v => +v);
const pkgPrice = [];
const pcPrice = [];
for (let i=0; i<m; i++) {
pkgPrice.push(arr[2*i]);
pcPrice.push(arr[2*i+1]);
}
const pkgMin = pkgPrice.reduce((acc, v) => acc < v ? acc : v, 1000);
const pcMin = pcPrice.reduce((acc, v) => acc < v ? acc : v, 1000);
const pkgCount = Math.floor(n/6);
const pcCount = n-6*pkgCount;
let cost;
if (pkgMin/6 < pcMin) {
cost = pkgCount*pkgMin + (pcCount*pcMin < pkgMin ? pcCount*pcMin : pkgMin);
} else {
cost = n*pcMin;
}
console.log(cost);
주어진 기타줄 패키지와 낱개 가격 중에서 각각 최솟값을 찾는다.
패키지 최솟값을 6으로 나눈 값이 낱개 최솟값보다 크다면(패키지 효율이 오히려 더 안 좋다면), 낱개 가격으로 N개의 기타줄을 모두 구입하면 된다.
패키지 최솟값을 6으로 나눈 값이 낱개 최솟값보다 작다면, 먼저 패키지를 기타줄 총합 N개를 넘지 않는 최대로 구입을 하고, 나머지 기타줄(6개 미만)의 가격을 패키지 1개로 산 것과 낱개로 산 것의 가격을 비교하여 더 낮은 가격으로 구입한다.
'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 14889] 스타트와 링크 with Python (0) | 2021.05.06 |
---|---|
[백준 3085] 사탕 게임 with Node.js (0) | 2021.05.04 |
[백준 1966] 프린터 큐 with Python (0) | 2021.05.02 |
[백준 13305] 주유소 with Node.js (1) | 2021.05.01 |
[백준 15650] N과 M (2) with Python (0) | 2021.04.30 |