728x90
▶2293 - 동전 1
▶문제
n가지 종류의 동전이 있다. 각각의 동전이 나타내는 가치는 다르다. 이 동전을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그 경우의 수를 구하시오. 각각의 동전은 몇 개라도 사용할 수 있다.
사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다.
▶입력
첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.
▶출력
첫째 줄에 경우의 수를 출력한다. 경우의 수는 231보다 작다.
▶풀이
2, 3, 4번째 행은 각각 1, 2, 5에 해당하는 money를 나타낸 것이다.
dp[1] | dp[2] | dp[3] | dp[4] | dp[5] | dp[6] | dp[7] | dp[8] | dp[9] | dp[10] |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
+1 = 2 | +1 = 2 | +2 = 3 | +2 = 3 | +3 = 4 | +3 = 4 | +4 = 5 | +4 = 5 | +5 = 6 | |
+1 = 4 | +1 = 5 | +2 = 6 | +2 = 7 | +3 = 8 | +4 = 10 |
이런 식으로 결과가 나오도록 코드를 작성하였다.
n, k = map(int, input().split())
money = []
dp = [0 for _ in range(k+1)]
dp[0] = 1
for i in range(n):
money.append(int(input()))
for m in money:
for j in range(1, k+1):
if j - m >= 0:
dp[j] += dp[j-m]
print(dp[k])
728x90
'BOJ Code > Gold' 카테고리의 다른 글
[백준/BOJ] gold3 - 2655번 가장높은탑쌓기 (Python) (0) | 2022.06.24 |
---|---|
[백준/BOJ] gold2 - 1256번 사전 (Python) (0) | 2022.06.22 |
[백준/BOJ] gold3 - 1238번 파티 (Python) (0) | 2022.06.14 |
[백준/BOJ] gold3 - 1937번 욕심쟁이 판다문제 (Python) (0) | 2022.06.14 |
[백준/BOJ] gold3 - 11054번 가장 긴 바이토닉 부분 수열 (Python) (0) | 2022.06.14 |