[๋ฐฑ์ค 11047๋ฒ] [๐ฅ4] ๋์ 0 (python)
๋ฌธ์
์ค๊ท๊ฐ ๊ฐ์ง๊ณ ์๋ ๋์ ์ ์ด 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)
๋๊ธ๋จ๊ธฐ๊ธฐ