# [Algorithm/JS] ๋ฐฑ์ค€ 11047๋ฒˆ ๋™์ „ 0

๐Ÿ”— ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ (opens new window)

# Question

์ค€๊ทœ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋™์ „์€ ์ด N์ข…๋ฅ˜์ด๊ณ , ๊ฐ๊ฐ์˜ ๋™์ „์„ ๋งค์šฐ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๋™์ „์„ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•ด์„œ ๊ทธ ๊ฐ€์น˜์˜ ํ•ฉ์„ K๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋•Œ ํ•„์š”ํ•œ ๋™์ „ ๊ฐœ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

# Input

์ฒซ์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 10, 1 โ‰ค K โ‰ค 100,000,000)

๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๋™์ „์˜ ๊ฐ€์น˜ Ai๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค Aiย โ‰ค 1,000,000, A1ย = 1, iย โ‰ฅ 2์ธ ๊ฒฝ์šฐ์—ย Ai๋Š” Ai-1์˜ ๋ฐฐ์ˆ˜)

# Output

์ฒซ์งธ ์ค„์— K์›์„ ๋งŒ๋“œ๋Š”๋ฐ ํ•„์š”ํ•œ ๋™์ „ ๊ฐœ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

# Example

# Input 1

10 4200
1
5
10
50
100
500
1000
5000
10000
50000
1
2
3
4
5
6
7
8
9
10
11

# Output 1

6
1

# Input 2

10 4790
1
5
10
50
100
500
1000
5000
10000
50000
1
2
3
4
5
6
7
8
9
10
11

# Output 2

12
1

# Solution

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
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  1. ์ตœ์†Œ์˜ ๋™์ „ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ๋™์ „์˜ ๊ฐ€์น˜๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.
  2. ๊ฐ€์น˜๊ฐ€ ๊ฐ€๊ฒฉ๋ณด๋‹ค ๋‚ฎ์€ ๋™์ „์ผ ๋•Œ๋งŒ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
  3. Math.floor(price / coins[i]) ๋Š” ํ•ด๋‹น ๋™์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ˆ˜์ด๋‹ค. ๊ฐœ์ˆ˜๋งŒํผ cnt ๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  4. ๊ฐ€๊ฒฉ์„ ๋™์ „์˜ ๊ฐœ์ˆ˜ * ๋™์ „์˜ ๊ฐ€์น˜ ๋งŒํผ ๋บ€๋‹ค.
  5. ๊ฐ€๊ฒฉ์ด 0์ด ๋œ๋‹ค๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ๋ฒ—์–ด๋‚œ๋‹ค.
Last Updated: 2022. 6. 5. ์˜คํ›„ 3:42:39