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์›์„ ๋งŒ๋“œ๋Š”๋ฐ ํ•„์š”ํ•œ ๋™์ „ ๊ฐœ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1

10 4200
1
5
10
50
100
500
1000
5000
10000
50000

์˜ˆ์ œ ์ถœ๋ ฅ 1

6

์˜ˆ์ œ ์ž…๋ ฅ 2

10 4790
1
5
10
50
100
500
1000
5000
10000
50000

์˜ˆ์ œ ์ถœ๋ ฅ 2

12

ํ’€์ด

์ฃผ์–ด์ง„ ๋™์ „๋“ค์„ ํฐ ๊ธˆ์•ก๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๊ณจ๋ผ์„œ ๋ชฉํ‘œ ๊ธˆ์•ก k๋ฅผ ๋งŒ๋“œ๋Š” ์ตœ์†Œํ•œ์˜ ๋™์ „ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋กœ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ์ฃผ์–ด์ง„ ๋™์ „๋“ค์„ ํฐ ๊ธˆ์•ก๋ถ€ํ„ฐ ์ •๋ ฌํ•œ ๋’ค, ํฐ ๊ธˆ์•ก๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๋ชฉํ‘œ ๊ธˆ์•ก k๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋™์ „์„ ์„ ํƒํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์–ด์ง„ ๋™์ „์ด [1, 2, 5, 10]์ด๊ณ  ๋ชฉํ‘œ ๊ธˆ์•ก์ด 23์ด๋ผ๋ฉด, ํฐ ๊ธˆ์•ก๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ 10์› ๋™์ „ 2๊ฐœ, 2์› ๋™์ „ 1๊ฐœ, 1์› ๋™์ „ 1๊ฐœ๋ฅผ ์„ ํƒํ•˜์—ฌ ์ด 4๊ฐœ์˜ ๋™์ „์„ ์‚ฌ์šฉํ•˜์—ฌ 23์›์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์ฝ”๋“œ

ver(1) - Greedy ์‚ฌ์šฉ

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(nlogn)

import sys

input = sys.stdin.readline

# n: ๋™์ „์˜ ๊ฐ€์ง€ ์ˆ˜, k: ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ๊ธˆ์•ก
n, k = map(int, input().split())

# ๊ฐ ๋™์ „์˜ ๊ฐ€์น˜๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.
coin_values = sorted([int(input()) for _ in range(n)], reverse=True)

# ๊ฐ€์น˜๊ฐ€ ๋†’์€ ๋™์ „๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์„ ํƒํ•˜๋ฉฐ, ์„ ํƒํ•œ ๋™์ „๋“ค์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ผ๋‹ค.
count = 0
for coin in coin_values:
    # ํ˜„์žฌ ์„ ํƒํ•œ ๋™์ „์˜ ๊ฐ€์น˜๊ฐ€ k๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ,
    # ํ•ด๋‹น ๋™์ „์œผ๋กœ k์›์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
    if coin <= k:
        count += k // coin  # ํ•ด๋‹น ๋™์ „์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ๋”ํ•ด์ค€๋‹ค.
        k %= coin  # k์› ์ค‘ ์„ ํƒํ•œ ๋™์ „์œผ๋กœ ๋งŒ๋“  ๋ถ€๋ถ„์„ ๋บ€ ๋‚˜๋จธ์ง€ ๊ธˆ์•ก์„ ๊ณ„์‚ฐํ•œ๋‹ค.

# ๋™์ „ ๊ฐœ์ˆ˜์˜ ํ•ฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.
print(count)

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ