const fs = require('fs');
const [N, K, ...coins] = fs.readFileSync('dev/stdin').toString().split(/\s+/).map(Number);
coins.sort((a, b) => b - a);
let cnt = 0;
let price = K;
for (let i = 0; i < N; i++) {
if (price >= coins[i]) {
cnt += Math.floor(price / coins[i]);
price -= coins[i] * Math.floor(price / coins[i]);
if (price === 0) break;
}
}
console.log(cnt);
- 최소의 동전 개수를 구해야하기 때문에 각 동전의 가치를 내림차순으로 정렬한다.
- 가치가 가격보다 낮은 동전일 때만 코드를 실행한다.
Math.floor(price / coins[i])
는 해당 동전을 사용할 수 있는 개수이다. 개수만큼 cnt 를 증가시킨다.
- 가격을 동전의 개수 * 동전의 가치 만큼 뺀다.
- 가격이 0이 된다면 반복문을 벗어난다.