일일구름 IT

[백준 2293] 코인1 (Python) 본문

백준/다이나믹 프로그래밍

[백준 2293] 코인1 (Python)

일구름 2023. 5. 8. 19:53

문제

 

코드

n, k = map(int, input().split())

coin = []

for i in range(n):
    coin.append(int(input()))
sum = [0 for i in range(k+1)]
sum[0] = 1

for i in coin:
    for j in range(i, k+1):
        sum[j] += sum[j-i]

print(sum[k])

예제의 경우로 설명해보면, 동전 1만 선택했을 경우, 동전 1, 2원 중에서 선택한 경우, 동전 1, 2, 5원 중에서 선택한 경우를 차례로 구한다.

 

sum[0]에 1을 넣어준 이유는 j원이 되는데 i원 1개만 선택해도 되는 경우를 고려한것입니다. (j == i인 경우)

sum[j] += sum[j-i] 코드는 동전 i원을 뺀 값이 되는 경우에 i원 동전을 고르는 경우를 더하는것입니다.

 

 

 

 

너무 어렵다... 생각해 내질 못하겠어서 결국 구글링을했다 ㅜㅜㅜ

 

 

 

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

 

2293번: 동전 1

첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

'백준 > 다이나믹 프로그래밍' 카테고리의 다른 글

[백준 2294] 동전2 (Python)  (0) 2023.05.08
[백준 1932] 정수 삼각형 (Python)  (0) 2023.03.23
[백준 1912] 연속합 (Python)  (0) 2023.03.23