이것이 취업을 위한 코딩 테스트다. 다이나믹 프로그래밍 [효율적인 화폐 구성]

이것이 취업을 위한 코딩 테스트다. with 파이썬 - 나동빈

N, M = map(int, input().split())
array = []
for i in range(N):
    array.append(int(input()))
d = [10001] * (M + 1)  # 0 - M까지
d[0] = 0
for i in range(N):
    for j in range(array[i], M + 1):
        if d[j - array[i]] != 10001:
            d[j] = min(d[j], d[j - array[i]] + 1)
    print()
if d[M] != 10001:
    print(d[M])
else:
    print(-1)

느낀점

점화식을 세우는게 너무 어렵다.

좋은 웹페이지 즐겨찾기