πŸ”μ•Œκ³ λ¦¬μ¦˜/λ°±μ€€

[λ°±μ€€/python] 11047번 : 동전 0

ye3_ 2021. 3. 30. 00:03

문제

μ€€κ·œκ°€ κ°€μ§€κ³  μžˆλŠ” 동전은 총 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원을 λ§Œλ“œλŠ”λ° ν•„μš”ν•œ 동전 개수의 μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•œλ‹€.

 

μ •λ‹΅

import sys
N, K = map(int, sys.stdin.readline().split())
coin = []
answer = 0

for i in range(N):
    coin.append(int(sys.stdin.readline()))

for i in range(len(coin) - 1, -1, -1):
    if K == 0:
        break
    if K // coin[i] != 0:
        answer += K // coin[i]
        K = K % coin[i]

print(answer)

κ°€μž₯ κ°€μΉ˜κ°€ 큰 동전뢀터 κ°€μΉ˜μ˜ ν•© Kκ°€ λͺ‡ 개의 동전을 κ°€μ§ˆ 수 μžˆλŠ”μ§€ ν™•μΈν•œλ‹€.

 

κ°€μž₯ κ°€μΉ˜κ°€ 큰 동전뢀터 ν™•μΈν•΄μ•Όν•˜λ―€λ‘œ 반볡문의 λ²”μœ„λ₯Ό coin의 λ§ˆμ§€λ§‰ μΈλ±μŠ€λΆ€ν„° 인덱슀 0κΉŒμ§€λ‘œ μ„€μ •ν•œλ‹€.

 

λ™μ „μœΌλ‘œ λ‚˜λˆ„μ—ˆμ„ λ•Œ 0μ΄λΌλŠ” 것은 ν•΄λ‹Ή 동전보닀 Kκ°€ μž‘λ‹€λŠ” λœ»μ΄λ―€λ‘œ ν•΄λ‹Ή λ™μ „μœΌλ‘œ ν‘œν˜„ν•  수 μ—†λ‹€.

λ™μ „μœΌλ‘œ λ‚˜λˆ„μ—ˆμ„ λ•Œ 0이 μ•„λ‹ˆλ©΄

μ΅œμ’… 동전 개수 answer에 ν•΄λ‹Ή 동전이 λͺ‡κ°œ μ“°μ˜€λŠ”μ§€ 즉, Kλ₯Ό ν•΄λ‹Ή λ™μ „μœΌλ‘œ λ‚˜λˆˆ λͺ«μ„ 더해주고

Kλ₯Ό λ™μ „μœΌλ‘œ λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ‘œ λ°”κΏ”μ€€λ‹€.

 

Kκ°€ 0μ΄λΌλŠ” λœ»μ€ Kλ₯Ό μ΄μ „μ˜ λ™μ „λ“€λ‘œ λͺ¨λ‘ ν‘œν˜„ν–ˆμŒμ„ μ˜λ―Έν•˜λ―€λ‘œ λ°˜λ³΅λ¬Έμ„ λ‚˜μ˜¨λ‹€.