#11047 동전 [Silver IV]

HaizelΒ·2023λ…„ 7μ›” 3일
1

🧬 μ•Œκ³ λ¦¬μ¦˜ 풀이

λͺ©λ‘ 보기
30/53
post-thumbnail

πŸ‘‰ 문제 보기

  • μ‹œκ°„μ œν•œ : 1초
  • λΆ„λ₯˜ : 그리디 μ•Œκ³ λ¦¬μ¦˜

문제 μ„€λͺ…

μ€€κ·œκ°€ 가지고 μžˆλŠ” 동전은 총 Nμ’…λ₯˜μ΄κ³ , 각각의 동전을 맀우 많이 가지고 μžˆλ‹€.
동전을 적절히 μ‚¬μš©ν•΄μ„œ κ·Έ κ°€μΉ˜μ˜ 합을 K둜 λ§Œλ“€λ €κ³  ν•œλ‹€. μ΄λ•Œ ν•„μš”ν•œ 동전 개수의 μ΅œμ†Ÿκ°’μ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 Nκ³Ό Kκ°€ 주어진닀. (1 ≀ N ≀ 10, 1 ≀ K ≀ 100,000,000)
λ‘˜μ§Έ 쀄뢀터 N개의 쀄에 λ™μ „μ˜ κ°€μΉ˜ Aiκ°€ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 주어진닀. (1 ≀ Ai ≀ 1,000,000, A1 = 1, i β‰₯ 2인 κ²½μš°μ— AiλŠ” Ai-1의 배수)

좜λ ₯

첫째 쀄에 K원을 λ§Œλ“œλŠ”λ° ν•„μš”ν•œ 동전 개수의 μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•œλ‹€.

✏️ 풀이

// 그리디 μ•Œκ³ λ¦¬μ¦˜
const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

// λ™μ „μ˜ κ°€μ§€μˆ˜(n)κ³Ό λ§Œλ“€μ–΄μ•Όν•  κΈˆμ•‘(k)
let n = Number(input[0].split(' ')[0]);
let k = Number(input[0].split(' ')[1]);

// let arr = [];
// for (let i = 1; i <= n; i++) {
//     arr.push(Number(input[i]));
// }

input.shift();
let arr = [...input];

let total = 0;
// κ°€μΉ˜κ°€ 큰 동전뢀터 ν™•μΈν•˜κΈ° μœ„ν•΄ λ’€μ—μ„œλΆ€ν„°(n-1) ν™•μΈν•œλ‹€.
for (let i = n -1 ; i >= 0; i--) {
    // ν•΄λ‹Ή i번째 동전을 λͺ‡κ°œ μ‚¬μš©ν•΄μ•Όν•˜λŠ”μ§€ -> 즉 λͺ«μ„ ꡬ해 total에 더해쀀닀.
    total += parseInt(k / arr[i]);
    // ν•΄λ‹Ή λ™μ „μœΌλ‘œ λͺ¨λ‘ 거슬러 μ€€ λ’€ 남은 κΈˆμ•‘
    k %= arr[i];
}
console.log(total);
profile
ν•œμž… 크기둜 λ² μ–΄λ¨ΉλŠ” κ°œλ°œμ§€μ‹ 🍰

0개의 λŒ“κΈ€