N, K = map(int, input().split())
items = [
list(map(int, input().split()))
for i in range(N)
]
# DP ๋ฉ๋ชจ์ด์ ์ด์
dp = [ [0] * (K+1) for _ in range(N+1)]
for i in range(1,N+1):
for w in range(1,K+1):
weight = items[i-1][0]
value = items[i-1][1]
if weight > w:
dp[i][w] = dp[i-1][w]
else:
# ๊ธฐ์กด์ ๋ง๋ค์ด ๋ w-weight ์ต๋๊ฐ ๊ฐ์ ธ ์ค๊ณ , ๋น๊ต
dp[i][w] = max(dp[i-1][w], dp[i-1][w-weight] + value)
print(dp[N][K])
(N+1) * (K+1) ์ฌ์ด์ฆ์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ ๋ฉ๋ชจ์ด์ ์ด์ ํ์ฌ ํ์๋ค.
ํน์ ๋ ๋์ ๋ฐฉ๋ฒ์ ์์๊น, ChatGPT์๊ฒ ๋ฌผ์ด๋ณด๋
N, K = map(int, input().split())
items = [
list(map(int, input().split()))
for _ in range(N)
]
dp = [0] * (K + 1) # 1์ฐจ์ DP ๋ฐฐ์ด
for weight, value in items:
# ๋ฌด๊ฒ๋ฅผ K๋ถํฐ weight๊น์ง ๊ฑฐ๊พธ๋ก ํ์ (๊ฐ์ด ๋ฎ์ด์ฐ์ด์ง ์๋๋ก)
for w in range(K, weight - 1, -1):
dp[w] = max(dp[w], dp[w - weight] + value)
print(dp[K])
1. ๋ฉ๋ชจ์ด์ ์ด์ ํ ๊ฐ ์ค ์ฐ์ด๋ ๊ฑด, ์ง์ ์ ๊ฐ ๋ฆฌ์คํธ์ด๊ณ , DP๋ฅผ ๋ค์์ ๋ถํฐ ๊ฐฑ์ ํ๋ฉด ์ ๋ฐ์ดํธ์ ์กฐํ๊ฐ ๊ผฌ์ด์ง ์๋๋ค.
2. ํ์ฌ ์์ดํ ์ ๋ฌด๊ฒ๋ณด๋ค (ํ์ฌ) ๊ฐ๋ฐฉ์ฉ๋์ด ์์๊ฑด ๊ณ ๋ ค ํ ํ์๊ฐ ์๋ค = ์๋ค์ด๊ฐ๋ค.
'๐ป CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
200๋ ๊ฐ ํ๊ด์๋ จํ๋๋ PS ์ต๊ฐ์๊ฐ ๋ ๊ฑด์ ๋ํ์ฌ (0) | 2025.02.18 |
---|---|
[SQL] ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก์์ ๋์ฌ์ค / ๋์ฌ ๊ฐ๋ฅ ์ฌ๋ถ ๊ตฌ๋ถํ๊ธฐ (ํ๋ก๊ทธ๋๋จธ์ค/Level 3) (5) | 2025.02.11 |
[Advent of Code] Day 1 Historian Hysteria (0) | 2024.12.01 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ] ์๊ตฌ์ฌํญ ํ์ธ (1) - ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก (0) | 2024.03.31 |
CCW, CW- ์ธ์ (0) | 2024.01.21 |