자료구조와 알고리즘/개인적인 코딩테스트 관련 풀이

[완전탐색][상태 트리] - 동전 바꿔주기(DFS)

얄루몬 2022. 7. 26. 16:33

문제

주어진 금액에 맞게 동전들을 사용한 경우가 몇 번이나 있는지 출력해라

문제 풀이

def DFS(L,s):
    global res
    if L == k:
        if s == T:
            res += 1  
    else:
        for i in range(coin[L][1]+1):
            DFS(L+1,s + (coin[L][0]*i))
        
        

if __name__ == "__main__":
    T = int(input()) #지폐의 금액
    k = int(input()) #동전의 가지 수
    res = 0
    coin = []
    for i in range(k):
        #동전 금액, 갯수
        a, b = map(int,input().split())
        coin.append([a,b])
    DFS(0,0)
    print(res)
  • 주어진 동전의 갯수만큼 DFS를 돌며 진행한다.