๋ฌธ์
https://www.acmicpc.net/problem/2293
๋ด ๋ฌธ์ ํ์ด
import sys
n, k = map(int, sys.stdin.readline().strip().split())
coin = []
for _ in range(n):
coin.append(int(sys.stdin.readline().strip()))
dp = [0 for _ in range(k+1)]
dp[0] = 1
for c in coin:
for i in range(c, k+1):
dp[i] += dp[i - c]
print(dp[-1])
๐ DP ๋ฌธ์
์ ํ์์ ๊ตฌํ๋ ๊ณผ์ ์ ์๋ ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ค.
๋ํ๋ก 1, 2, 5 ๋์ ์ ๋ชจ๋ ์ฌ์ฉํ์ฌ '6'์ ๋ง๋๋ ๊ณผ์ ์ ์์ ํ๋ค.
6์ ๊ฒฝ์ฐ (1, 1, 1, 1, 1), (1, 1, 1, 1, 2), (1, 1, 2, 2), (2, 2, 2), (1, 5) ์ด๋ ๊ฒ 5๊ฐ์ง ๊ฒฝ์ฐ์ ์๋ฅผ ๊ฐ์ง๋๋ฐ,
์ด๋ ๊ธฐ์กด์ 1๊ณผ 2๋ง ๊ฐ์ง๊ณ 6์ ๋ง๋ค์๋ ๊ฒฝ์ฐ์ ์์, '6 - 5' ์ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ํด์ฃผ๋ฉด ๋๋ ๊ฒ์ ์ ์ ์๋ค.
=> dp[i] += dp[i - c]
๐ก ํผ๋๋ฐฑ
์ ํ์ ๋์ถ ๊ณผ์ ์์,, ์๋ฏ ๋ง๋ฏ ํ์ฌ ์์ฃผ ์ค๋๊ฑธ๋ ธ๋ค.
๋ง์ด ํ๋ฉด ๋์์ง๊ฒ ์งใ ก,?,,
'4๏ธโฃ Python > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python Algorithm] ๋ค๋ฆฌ ๋๊ธฐ BOJ #1010 (0) | 2022.05.26 |
---|---|
[Python Algorithm] LCS BOJ #9251 (0) | 2022.05.26 |
[Python Algorithm] AC BOJ #5430 (0) | 2022.05.24 |
[Python Algorithm] ์ ํ๋ฒํธ ๋ชฉ๋ก BOJ #5052 (0) | 2022.05.24 |
[Python Algorithm] ๊ณตํต ๋ถ๋ถ ๋ฌธ์์ด BOJ #5582 (0) | 2022.05.24 |
๋๊ธ