๋ฌธ์
https://www.acmicpc.net/problem/12865
12865๋ฒ: ํ๋ฒํ ๋ฐฐ๋ญ
์ฒซ ์ค์ ๋ฌผํ์ ์ N(1 ≤ N ≤ 100)๊ณผ ์ค์๊ฐ ๋ฒํธ ์ ์๋ ๋ฌด๊ฒ K(1 ≤ K ≤ 100,000)๊ฐ ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑฐ์ณ ๊ฐ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ W(1 ≤ W ≤ 100,000)์ ํด๋น ๋ฌผ๊ฑด์ ๊ฐ์น V(0 ≤ V ≤ 1,000)
www.acmicpc.net
ํ์ด
# ๋ฐฑ์ค 12865๋ฒ ๋ฌธ์ - ํ๋ฒํ ๋ฐฐ๋ญ
n, k = map(int, input().split())
dp = [[0]*(k+1) for _ in range(n+1)]
weight = []
value = []
for _ in range(n):
w, v = map(int, input().split())
weight.append(w)
value.append(v)
for i in range(1, n+1): # ๋ฌผ๊ฑด idx
for j in range(1, k+1): # ๊ฐ๋ฐฉ์ ๋ฌด๊ฒ
if j < weight[i-1]: # [์ด์ ๋ฌผ๊ฑด][๊ฐ์๋ฌด๊ฒ]
dp[i][j] = dp[i-1][j]
else: # max(
# ํ์ฌ ๋ฌผ๊ฑด ๊ฐ์น + knapsack[์ด์ ๋ฌผ๊ฑด][ํ์ฌ ๊ฐ๋ฐฉ ๋ฌด๊ฒ - ํ์ฌ ๋ฌผ๊ฑด ๋ฌด๊ฒ],
# knapsack[์ด์ ๋ฌผ๊ฑด][ํ์ฌ ๊ฐ๋ฐฉ ๋ฌด๊ฒ])
dp[i][j] = max(dp[i-1][j], dp[i-1][j-weight[i-1]] + value[i-1])
print(dp[n][k])
DP
'๐๏ธ Algorithm > ๐ฉ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ฉ [๋ฐฑ์ค] [Python] [Class3] 1697๋ฒ_์จ๋ฐ๊ผญ์ง (0) | 2022.11.10 |
---|---|
๐ฉ [๋ฐฑ์ค] [Python] [Class3] 1389๋ฒ_์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น (0) | 2022.11.10 |
๐ฉ [๋ฐฑ์ค] [Python] 2630๋ฒ_์์ข ์ด ๋ง๋ค๊ธฐ (0) | 2022.11.09 |
๐ฉ [๋ฐฑ์ค] [Python] 2468๋ฒ_์์ ์์ญ (1) | 2022.11.09 |
๐ฉ [๋ฐฑ์ค] [Python] 2193๋ฒ_์ด์น์ (0) | 2022.11.08 |