본문 바로가기
코딩 테스트/다이나믹 프로그래밍

효율적인 화폐 구성

by hazel_ 2021. 2. 21.

p. 226

 

n,m=map(int, input().split())

array=[]
for _ in range(n):
  array.append(int(input()))

d=[10001]*(m+1)

d[0]=0
for i in range(n):
  for j in range(array[i],m+1):
    d[j]=min(d[j], d[j-array[i]]+1)

if d[m]==10001:
  print(-1)
else:
  print(d[m])

주어진 화폐 단위의 배수별로 개수를 구한다.

개수를 구하면서 최소한의 화폐 개수를 찾는다.

'코딩 테스트 > 다이나믹 프로그래밍' 카테고리의 다른 글

정수 삼각형  (0) 2021.02.22
금광  (0) 2021.02.22
바닥 공사  (0) 2021.02.21
개미 전사  (0) 2021.02.21
1로 만들기  (0) 2021.02.21

댓글