효율적인 화폐 구성

Ji·2022년 3월 30일
0
n,m=map(int,input().split())
d=[10001]*(m+1)
d[0]=0
currency=[int(input()) for _ in range(n)]

for i in range(len(currency)):
    for j in range(currency[i],m+1):
        # 코인 + (현재-코인) 값으로 현재의 값을 만드는 방법이 존재
        if d[j-currency[i]]!=10001:
            d[j]=min(d[j],d[j-currency[i]]+1)

if d[m]==10001:
    print(-1)
else:
    print(d[m])
  • 초반 값 dp 값을 0으로 설정해서 무척 해멤 (결국 못 풂)
  • d[j-currency[i]]+1 은 j-currency[i] 코인을 만드는데 필요한 방법의 수 + 현재 코인의 사용 (따라서 계산식 d[j-currency[i]]+1)
profile
공부방

0개의 댓글