[BOJ][๐ก5][๋ฐฑ์ค#12865] ํ๋ฒํ ๋ฐฐ๋ญ
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold V
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
์ด ๋ฌธ์ ๋ ์์ฃผ ํ๋ฒํ ๋ฐฐ๋ญ์ ๊ดํ ๋ฌธ์ ์ด๋ค. ํ ๋ฌ ํ๋ฉด ๊ตญ๊ฐ์ ๋ถ๋ฆ์ ๋ฐ๊ฒ ๋๋ ์ค์๋ ์ฌํ์ ๊ฐ๋ ค๊ณ ํ๋ค. ์ธ์๊ณผ์ ๋จ์ ์ ์ฌํผํ๋ฉฐ ์ต๋ํ ์ฆ๊ธฐ๊ธฐ ์ํ ์ฌํ์ด๊ธฐ ๋๋ฌธ์, ๊ฐ์ง๊ณ ๋ค๋ ๋ฐฐ๋ญ ๋ํ ์ต๋ํ ๊ฐ์น ์๊ฒ ์ธ๋ ค๊ณ ํ๋ค. ์ค์๊ฐ ์ฌํ์ ํ์ํ๋ค๊ณ ์๊ฐํ๋ N๊ฐ์ ๋ฌผ๊ฑด์ด ์๋ค. ๊ฐ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ W์ ๊ฐ์น V๋ฅผ ๊ฐ์ง๋๋ฐ, ํด๋น ๋ฌผ๊ฑด์ ๋ฐฐ๋ญ์ ๋ฃ์ด์ ๊ฐ๋ฉด ์ค์๊ฐ V๋งํผ ์ฆ๊ธธ ์ ์๋ค. ์์ง ํ๊ตฐ์ ํด๋ณธ ์ ์ด ์๋ ์ค์๋ ์ต๋ K๋งํผ์ ๋ฌด๊ฒ๋ง์ ๋ฃ์ ์ ์๋ย ๋ฐฐ๋ญ๋ง ๋ค๊ณ ๋ค๋ ์ ์๋ค. ์ค์๊ฐ ์ต๋ํ ์ฆ๊ฑฐ์ด ์ฌํ์ ํ๊ธฐ ์ํด ๋ฐฐ๋ญ์ ๋ฃ์ ์ ์๋ ๋ฌผ๊ฑด๋ค์ ๊ฐ์น์ ์ต๋๊ฐ์ ์๋ ค์ฃผ์.
์ ๋ ฅ
์ฒซ ์ค์ ๋ฌผํ์ ์ N(1 โค N โค 100)๊ณผ ์ค์๊ฐ ๋ฒํธ ์ ์๋ ๋ฌด๊ฒ K(1 โค K โค 100,000)๊ฐ ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑฐ์ณ ๊ฐ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ W(1 โค W โค 100,000)์ ํด๋น ๋ฌผ๊ฑด์ ๊ฐ์น V(0 โค V โค 1,000)๊ฐ ์ฃผ์ด์ง๋ค. ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๋ชจ๋ ์๋ ์ ์์ด๋ค.
์ถ๋ ฅ
ํ ์ค์ ๋ฐฐ๋ญ์ ๋ฃ์ ์ ์๋ ๋ฌผ๊ฑด๋ค์ ๊ฐ์นํฉ์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
์์
์ ๋ ฅ
4 7
6 13
4 8
3 6
5 12
์ถ๋ ฅ
14
My Sol
import sys
input = sys.stdin.readline
N, K = map(int, input().split())
dp = [[0]*(K+1) for _ in range(N+1)]
for i in range(1, N+1):
w, v = map(int, input().split())
for j in range(1, K+1):
if j >= w:
dp[i][j] = max(dp[i-1][j], dp[i-1][j-w]+v)
else:
dp[i][j] = dp[i-1][j]
print(dp[N][K])
ํ๋ฌ์ ์ ์กฐํฉ์ ํ์ด๋ณด๋ ค๋ค๊ฐ ์ฒ์ฐธํ๊ฒ ํจ๋ฐฐํ ๋ฌธ์ ์๋ค. DP๋ฅผ ์ฌ์ฉํ๋ ์ ํ์ ์ธ ๋ฐฐ๋ญ๋ฌธ์ ์๋ค. ์ฌ์ค ๋ค๋ฅธ ์ค๋ฒ ๋ฌธ์ ๋ฅผ ํ๋ ค๋ค๊ฐ ๊ฐ์ด ์ ์์ ํ์ด๋ฅผ ์ฐพ์ ๊ณต๋ถํ๋๋ฐ, DP๋ฅผ ์ฌ์ฉํด์ ํน์ ๋ฌผ๊ฑด์ ๋ํด ๋ฐฐ๋ญ์ ๋ฌผ๊ฑด์ ๋ ๋ฃ์ ์ ์๋ค๋ฉด ๋ฃ์ง ์๊ณ , ๋ ๋ฃ์ ์ ์๋ค๋ฉด ๋ฃ๋ ๊ฒฝ์ฐ์ ๋ฃ์ง ์๋ ๊ฒฝ์ฐ ์ค ์ต๋๊ฐ์ ๊ตฌํด ๊ฐ์ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ด๋ค. ์ด๋ ๊ฒ ๋๊น์ง ๊ฐ๋ ๊ฒ์ด๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋ชจ๋ฒ๋ต์
n, k = map(int, input().split())
data =[]
for i in range(n):
a, b = map(int, input().split())
data.append((a,b))
data.sort()
dp = [0] * (k+1)
for i in range(len(dp)):
if i >= data[0][0]:
dp[i] = data[0][1]
for j in range(1, len(data)):
for i in range(k, data[j][0]-1, -1):
dp[i] = max(dp[i], dp[i-data[j][0]]+data[j][1])
print(dp[-1])
์ฐ์ฐ์๊ฐ์ด ์กฐ๊ธ ๋ ๋น ๋ฅธ ๋ฌธ์ ํ์ด๋ฅผ ๋ฐ๊ฒฌํด์ ํ์ด๋ฅผ ๋ถ์ํด๋ณด๋ ค ํ๋ค. ์ด ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ํํํํ์ฌ sort๋ก ์ฐ์ ์์๋ฅผ ๋์๋ค. ๋๋ 2์ฐจ์ ๋ฐฐ์ด์ memoization์ ๋ง๋ค์๋๋ฐ, ์ด ๋ถ์ ๋ฎ์ด์์ฐ๋ฉด์ 1์ฐจ์ ๋ฐฐ์ด์ memoization์ ํ์ จ๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ