상세 컨텐츠

본문 제목

다이나믹 프로그래밍(동전 바꾸기)

똑똑한 개발/Algorithm 과 Data Structure

by 성댕쓰 2021. 7. 6. 21:24

본문

문제: coins에 주어진 동전을 가지고 amount를 만들기 위한 최소한의 동전의 갯수는 몇개인가?

 

from typing import List

def CoinChange(coins : List[int], amount : int) -> int:
    dp_array = [-1] *  (amount + 1)
    dp_array[0] = 0

    MAXCNT = 9999999
    for idxSum in range(1, amount + 1):
        minCnt = MAXCNT
        for coin in coins:
            if idxSum - coin < 0:
                continue
            if dp_array[idxSum - coin] == -1:
                continue
            minCnt = min(minCnt, dp_array[idxSum - coin] + 1)
        dp_array[idxSum] = -1 if minCnt == MAXCNT else minCnt

    return dp_array[amount]

print(CoinChange(coins=[2,3,5], amount = 10))

출처 : (5) 코딩테스트, 초급, 동전바꾸기 - YouTube

'똑똑한 개발 > Algorithm 과 Data Structure' 카테고리의 다른 글

백트래킹  (0) 2021.07.07
다이나믹 프로그래밍(knapsack problem)  (0) 2021.07.06
다이나믹 프로그래밍(계단 오르기)  (0) 2021.07.05
다이나믹 프로그래밍(기초)  (0) 2021.07.05
Heap Sort  (0) 2021.05.29

관련글 더보기

댓글 영역