๐ ์ ์ถ ์ฝ๋
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
c = [int(input()) for i in range(n)]
dp = [0 for i in range(k+1)]
dp[0] = 1
for i in c:
for j in range(i, k+1):
if j-i >= 0:
dp[j] += dp[j-i]
print(dp[k])
ํต์ฌ๋ฝ์ธ๋จ :
* ๋์ ๊ณํ๋ฒ (Dynamic Programming, DP) ๋ฌธ์ ๋ฅผ ํ ๋ ๊ณ ๋ คํด์ผํ ๊ฒ๋ค
- '์ ์ฒด ๋ฌธ์ '๋ฅผ '๋ถ๋ถ ๋ฌธ์ '๋ก ์ ๋๋ ์ ๋ฌธ์ ๋ฅผ ์ ๊ทผํ๋๊ฐ?
- ์ ์ฒด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ถ๋ถ ๋ฌธ์ ์ ์ ํ์์ ๋ฌด์์ธ๊ฐ?
- ๋ถ๋ถ ๋ฌธ์ ๋ค์ ํด๊ฒฐ ํ ์ป์ ๊ฒฐ๊ณผ๊ฐ๋ค์ ๋ฉ๋ชจ์ด์ ์ด์ ํ์๋๊ฐ?
- ๋ถ๋ถ ๋ฌธ์ ์ ์ ํ์์ ๋ถ๋ถ ๋ฌธ์ ๋ค ์ฌ์ด์ '๊ด๊ณ'๋ฅผ ๋น ์ง์์ด ๊ณ ๋ คํ๋๊ฐ?
๋ฌธ์ ๋ฅผ ํตํด์ ์ ์ ์๋ ์ :
* ์์ ์ดํด๋ณธ ๋์ ๊ณํ๋ฒ ๊ณ ๋ ค์ฌํญ๋ค์ ๋ฐํ์ผ๋ก ๋ฌธ์ ๋ฅผ ๋ฐ๋ผ๋ด๋ณด์!
- '์ ์ฒด ๋ฌธ์ '๋ฅผ '๋ถ๋ถ ๋ฌธ์ '๋ก ์ ๋๋ ์ ๋ฌธ์ ๋ฅผ ์ ๊ทผํ๋๊ฐ?
- ์ ์ฒด ๋ฌธ์ : ๊ฐ์น์ ํฉ์ด k์์ด ๋๋ ๊ฒฝ์ฐ์ ์
- ๋ถ๋ถ ๋ฌธ์ : ๊ฐ์น์ ํฉ์ด i (1 ≤ i ≤ k)์์ด ๋๋ ๊ฒฝ์ฐ์ ์
- (๋ถ๋ถ ๋ฌธ์ ๋ฅผ ๋ ์ธ๋ถ์ ์ผ๋ก ๋๋ ๋ณด์๋ฉด) ํน์ ๋์ ์ ์ผ์ ๋ ๊ฐ์น์ ํฉ์ด i์์ด ๋๋ ๊ฒฝ์ฐ์ ์
- ์ ์ฒด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ถ๋ถ ๋ฌธ์ ์ ์ ํ์์ ๋ฌด์์ธ๊ฐ?
- ๋ถ๋ถ ๋ฌธ์ ๋ค์ ํด๊ฒฐ ํ ์ป์ ๊ฒฐ๊ณผ๊ฐ๋ค์ ๋ฉ๋ชจ์ด์ ์ด์
ํ์๋๊ฐ?
- ์์ ์ธ๊ธํ ๋ถ๋ถ ๋ฌธ์ ๋ค์ ํด๊ฒฐํด๋๊ฐ๋ฉฐ ๋ฉ๋ชจ์ด์ ์ด์ ํ ๊ฒ์ธ๋ฐ, ์๊ฐ ์ ํ์ด 0.5์ด์ด๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ์ ํ๋ 4MB๋ฐ์ ๋์ง ์๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ฆฌ์คํธ ์์์ ๋ฎ์ด ์์ฐ๋ ์์ผ๋ก ๋น ๋ฅด๊ฒ ํด๊ฒฐํด๋๊ฐ์ผ ํจ
- ๋ถ๋ถ ๋ฌธ์ ์ ์ ํ์์ ๋ถ๋ถ ๋ฌธ์ ๋ค ์ฌ์ด์ '๊ด๊ณ'๋ฅผ ๋น ์ง์์ด ๊ณ ๋ คํ๋๊ฐ?
- ์ ์ถ๋ ฅ ์์๋ก ์ฃผ์ด์ง ๊ฒฝ์ฐ ๋ง๊ณ ๋ ๋ค๋ฅธ ์์๋ฅผ ์๊ฐํด๋ณด๋ฉฐ ํ ์คํ ํด๋ด์ผ ํ ๋ฏํจ
ํ์ํ ์ ๋ ฅ๊ฐ :
์ถ๋ ฅ๊ฐ:
๐ ํ์ ํ ๊ฒ์ ๋ฐํ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํด๋ณด์!
๐ ์๋ฉด ์ข์ ์ฝ๋๋ค
๐๋์ ๊ณํ๋ฒ ๋ฌธ์ ๋ฅผ ํ ๋ ๊ฟํ์ด ์์๊น? ํ๊ณ ๊ตฌ๊ธ๋ง์ ์์ฒญ ํ์๋๋ฐ, ๊ทธ ์ค์์ ์ ์ผ ๊น๋ํ๊ฒ ์ ๋ฆฌ๊ฐ ์ ๋์ด ์๋ ๋ธ๋ก๊ทธ์์!
(์ฐธ๊ณ ) https://mong9data.tistory.com/68
'Python > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 11650๋ฒ : ์ขํ ์ ๋ ฌํ๊ธฐ (python) (2) | 2023.05.19 |
---|