반응형
2293번: 동전 1
첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.
www.acmicpc.net
풀이
- 대표적인 DP 문제인 동전 문제다.
- 동전이 주어지고 , 그 동전들을 가지고 해당 금액을 만들 수 있는 경우의 수를 구하는 문제다.
- DP 점화식은 DP[I] = DP[I-K] + DP[I] 로 I 금액을 K 금액의 동전으로 만드는 경우를 이야기한다.
- 만약 1원 2원을 가지고 17원을 만드는 경우는 16원을 만드는 경우에 1원 동전을 사용하는 경우 , 15원을 만드는 경우에 2원 동전을 사용하는 경우 2가지 일 것이다.
- 위와 같은 방식으로 DP 배열을 채우고 DP[만들고 싶은 금액] 의 값을 출력하면 된다.
- 2293 동전 1 과 비슷한 문제로는 9084 동전 문제가 있다.
알고리즘 - Python / 백준 - 9084번 : 동전 (tistory.com)
알고리즘 - Python / 백준 - 9084번 : 동전
9084번: 동전 (acmicpc.net) 9084번: 동전 우리나라 화폐단위, 특히 동전에는 1원, 5원, 10원, 50원, 100원, 500원이 있다. 이 동전들로는 정수의 금액을 만들 수 있으며 그 방법도 여러 가지가 있을 수 있다.
ddggblog.tistory.com
import sys
n , money= map(int ,sys.stdin.readline().split(" "))
c = []
for i in range(n):
c.append(int(sys.stdin.readline()))
dp = [0 for i in range(money+1)]
dp[0] = 1
for i in c:
for o in range(1,money+1):
if o >= i:
dp[o] = dp[o] + dp[o-i]
print(dp[money])
반응형
'코딩 > 백준' 카테고리의 다른 글
알고리즘 - Python / 백준 - 9024번 : 두 수의 합 (0) | 2022.02.09 |
---|---|
알고리즘 - Python / 백준 - 4386번 : 별자리 만들기 (0) | 2022.02.06 |
알고리즘 - Python / 백준 - 11441번 : 합 구하기 (0) | 2022.02.02 |
알고리즘 - Python / 백준 - 2960번 : 에라토스테네스의 체 (0) | 2022.02.02 |
알고리즘 - Python / 백준 - 2467번 : 용액 (0) | 2022.02.02 |