11047 동전 0

const fs = require('fs');
const [N, K, ...coins] = fs.readFileSync('dev/stdin').toString().split(/\s+/).map(Number);
coins.sort((a, b) => b - a); // 1

let cnt = 0;
let price = K;

for (let i = 0; i < N; i++) {
  if (price >= coins[i]) {
    // 2
    cnt += Math.floor(price / coins[i]); // 3
    price -= coins[i] * Math.floor(price / coins[i]); // 4

    if (price === 0) break; // 5
  }
}

console.log(cnt);
  1. 최소의 동전 개수를 구해야하기 때문에 각 동전의 가치를 내림차순으로 정렬한다.
  2. 가치가 가격보다 낮은 동전일 때만 코드를 실행한다.
  3. Math.floor(price / coins[i]) 는 해당 동전을 사용할 수 있는 개수이다. 개수만큼 cnt 를 증가시킨다.
  4. 가격을 동전의 개수 * 동전의 가치 만큼 뺀다.
  5. 가격이 0이 된다면 반복문을 벗어난다.