[백준/파이썬] 11047번 동전 0 풀이

업데이트:



문제 정보


풀이

문제

서로 다른 가치의 동전들이 주어질 때, 합이 K가 되도록 하는 최소 동전 개수를 구하는 문제입니다.

입력으로 주어지는 동전 체계에서는 큰 단위부터 greedy하게 선택해도 최적해가 보장됩니다.

코드

n, k = tuple(map(int, input().split()))
money = list()

for _ in range(n):
    money.append(int(input()))


money.sort(reverse=True)

cnt = 0
for m in money:
    if(m <= k):
       cnt += k//m
       k %= m
       
print(cnt)

설명

동전 가치를 내림차순으로 정렬한 뒤, 각 동전에 대해:

  • 현재 금액 k에서 가능한 만큼 사용하고
  • 남은 금액을 다음 동전으로 넘깁니다.

cnt += k // coin, k %= coin를 반복하면 됩니다.



댓글남기기