[백준 2293 골5] 동전 1 (DP/python) -/3

밀루·2023년 4월 3일

백준 문제풀이

목록 보기
23/51


https://www.acmicpc.net/problem/2294

n, k = map(int, input().split())
coins = []
dp = [0 for _ in range(k+1)]
dp[0] =1
for _ in range(n):
    coins.append(int(input()))

for i in range(n):
    for j in range(coins[i], k+1):
        if dp[j-coins[i]]:
            dp[j] = dp[j] + dp[j-coins[i]]
print(dp[k])

10원을 내는 방법은
5원을 하나 내고, 남은 5원을 내는 방법과 (dp[5])
2원을 하나 내고, 남은 8원을 내는 방법과 (dp[8])
1원을 하나 내고, 남은 9원을 내는 방법으로 나눌 수 있다.

이를 저렇게 풀어낼 수 있다.

https://seongjuk.tistory.com/entry/BOJ-%EB%B0%B1%EC%A4%80-2293%EB%B2%88-%EB%8F%99%EC%A0%84-1
여기 이중 어레이로 접근하는 방법에 대해서도 잘 표현이 되어있는데, 괜찮은 방법이라 추가해ㅜㄴ다.

profile
벨로그에 틀린 코드나 개선할 내용이 있을 수 있습니다. 지적은 언제나 환영합니다.

0개의 댓글