백준

[백준 11047] 동전0 / Node.js / 그리디 알고리즘 기초

mark340 2023. 1. 23. 21:41

https://www.acmicpc.net/problem/11047

 

11047번: 동전 0

첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)

www.acmicpc.net

  • 문제를 풀 수 있는 방법은 다양하지만 가장 효율적이고 쉬운 방법을 찾자
let [I,...input] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')
let K = +I.split(' ')[1]
let coins = input.map(Number).sort((a,b) => b-a).filter((v) => v <= K)

let cnt = 0;
let remain = K;

for(let i in coins){
  if(remain === 0){
    break;
  }
  cnt += Math.floor(remain/coins[i])
  remain %= coins[i]
}

console.log(cnt)