๐ - G5_12865_ํ๋ฒํ ๋ฐฐ๋ญ ๋ฌธ์
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
DP๋ฌธ์ ๋ฅผ ํ๊ธฐ ์์ํ๋๋ฐ, ๊ณ์ ๋จธ๋ฆฌ๋ฅผ ๊ตด๋ ค๋ด๋ ํ์ด๋ฒ์ด ์๊ฐ๋์ง ์์์ ๋ค๋ฅธ ์ฌ๋๋ค ํ์ด๋ฅผ ์ฐธ๊ณ ํ๋ค.
์ด๋๊น์ง๋ 2์ฐจ์ ๋ฐฐ์ด์ ์ปจํธ๋กค ํ ๋ i,j๋ฅผ ์ด์ฉํด์ i,j์ ๊ฐ์ ๋ง๋ ์นธ์ ์ ๋ฐ์ดํธ ์์ผ์ฃผ๋ ๋๋์ด์๋๋ฐ,
DP๋ ์ฌ๋ฌ ๋ฌธ์ ๋ค์ ๋ณด๋ค๋ณด๋ i,j๋ก ์ปจํธ๋กค ํ๊ธด ํ์ง๋ง , ์๋์ ์์์ ๊ฐ์ด j๋ฅผ ๊ฐ๋ฐฉ์ ๋ฌด๊ฒ์ธ w์ ๋น๊ตํด์ ํด๋นํ๋ ์นธ์ i,j ๋ฟ๋ง ์๋๋ผ w, v์ ๊ฐ์ ๋ณ์๋ค๊น์ง ๊ฐ์ด ์ฌ์ฉํด์ผ๋ผ์ ๊ทธ๋ฐ์ง ์ดํด๊ฐ ์ ์๋๋ค.
์๋์ ์์์๋ j์ w๋ฅผ ๋น๊ตํด์ j๊ฐ w๋ณด๋ค ์์ผ๋ฉด ์ด์ ๊ฐ์ ๊ฐ์ ธ์์ ์ ๋ฐ์ดํธ ํด์ฃผ๊ณ ,
j๊ฐ w์ ๊ฐ๊ฑฐ๋ ํฌ๋ค๋ฉด ์ด์ ๊ฐ๋ฐฉ๊ณผ ํ์ฌ ๊ฐ๋ฐฉ์ ๋ฌด๊ฒ๋ก ๋ง๋ค ์ ์๋ ๊ฐ์ ์ ๋ฐ์ดํธ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
๐ฅ - ํ์ด์ฌ ์ฝ๋
from sys import stdin as s
from collections import deque
s = open('input.txt','rt')
# 4 7
# 6 13
# 4 8
# 3 6
# 5 12 ์ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅ
n, k = map(int, s.readline().split())
thing = [[0,0]]
d = [[0]*(k+1) for _ in range(n+1)]
for i in range(n):
thing.append(list(map(int, s.readline().split())))
for i in range(1, n+1): # i -> ๋ค๋ฅธ ์ง
for j in range(1, k+1): # j -> ํ์ฉ๋๋ ๋ฌด๊ฒ
w = thing[i][0]
v = thing[i][1]
if j < w:
d[i][j] = d[i-1][j]
else:
d[i][j] = max(d[i-1][j], d[i-1][j-w]+v)
print(d[n][k])
ใ ์ ์ ์ญ๋ฆฌ๋ฅผ ํํ๊ณ ์ถ์ ๋๋ง๋ค ์๋ค์ ๋ง์ ์ฃผ๋ณ์ ์ดํด๋ณด๊ฒ. ๊ทธ๋ฌ๋ฉด ์ด๋ค ์ด์ ๋ก ๊ทธ ์ผ์ด ์ผ์ด๋ฌ๋์ง ์ ์ ์์ ๊ฒ์ด์ผ. ใ
-์ํฝํ ํ ์ค, ๋ํ๋ก 3.17.1
๋ฌด์ธ๊ฐ ์๋ชป๋์๋ค๋ ๋๋์ ๋จ์ง ์ธ์์ ๋ฌธ์ ์ผ ๋ฟ์ด๋ค. ๋ชจ๋ ์ผ์ ์ด์ ๊ฐ ์๊ฒ ์ง๋ง ํ ๊ฐ์ธ์ด ๊ด๋ํ ์ญ๋ฆฌ์ ์ด๋ฉด์ ์ ํํ๊ฒ ํ์ ํ๊ธฐ๋ ํ๋ค๋ค.
์ง๊ตฌ ๋ฐ๋ํธ์ ์๋ ๋๋น์ ์์ ๋ ๊ฐฏ์ง ๋๋ฌธ์ ํํ์ด ๋ฐ์ํ ์๋ ์๊ณ ์ง๊ธ ๊ฒช๊ณ ์๋ ๋ถ์ด์ด ํ์ด์ ์ ์กฐ์ผ ์๋ ์๋ค.
ใ ์ ๋ ผ์ ์ง์์ ํ๊ณ ํ๊ฒ ์ดํดํ๊ธฐ ์ํด์ ์๊ธฐ๊ธฐ๋ง์ ๊ฐ์ฅ ๊ฒฝ๊ณํด์ผ ํ๋ค๊ณ ๋งํ๋ค. ใ
-๋์ค๊ฒ๋ค์ค์ ๊ฐ์, ํ์ํ ์ฒ ํ์๋ค์ ์ถ. 7.23
์์ ์ด ์ด๋ฏธ ์๋ฒฝํ๋ฉฐ ๋๋ฆฌ ์กด๊ฒฝ๋ฐ๋๋ค๊ณ ์๊ฐํ๋ ํ ์ฐ๋ฆฌ๋ ์ด๋ค ๋์ฑ๋ ํจ์ํ ์ ์์ผ๋ฉฐ ํ์ธ์ ์กด๊ฒฝ์ ์ป๋ ๊ฒ๋ ๋ถ๊ฐ๋ฅํ๋ค. ๊ทธ๋ฐ ์๋ฏธ์์ ๊ทธ๋ฆ๋ ์๋ถ์ฌ๊ณผ ์๊ธฐ๊ธฐ๋ง์ ์ธ๊ฐ์ด ๋ง๋ ํ ๊ฐ์ ธ์ผํ๋ ๋ฏธ๋์ ์ ์ด๋ค.
์ด ๋์ ๋ฌด์์ด๋ '์ด๋ฏธ ๊ฐ๊ณ ์๋ค'๋ผ๋ฉฐ ์ฐ๋ฆฌ๋ฅผ ์์ธ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๋ฅผ ์์ด๊ธฐ ์ํด ๊ธฐ๋ฏผํ๊ฒ ๋ฌ๋ ค์ค๋ ์๋ถ์ฌ์ ์ ๋ํ๋ ๋ง์์ผ๋ก ๋ํด์ผ ํ๋ค.
ํญ์ ๊ฒธ์ํ๊ณ , ์ฑ์ฐฐํ๋ฉฐ ๋ฐ์ฑํ๋ ์์ธ๋ก ์ถ์ ๋ํด์ผ ์์ผ๊ฐ ๋์ด์ง๋ฉฐ ๊ฒฌ๋ฌธ์ด ์๊ธด๋ค.
ใ 3์ฒ ๋ ์ ์ด์๊ฐ๋ค๊ณ ํ ์ง๋ผ๋, ํค์๋ฆด ์ ์์ด ๋ง์ ์ธ์์ ์ด ์ ์๋ค๊ณ ํ ์ง๋ผ๋ ๋ช ์ฌํ๋ผ. ์ฐ๋ฆฌ๊ฐ ์์ด๋ฒ๋ฆฌ๋ ๊ฒ์ ํ์ฌ ์ฐ๋ฆฌ๊ฐ ์์ํ๊ณ ์๋ ์๊ฐ์ ์ถ์ด๋ฉฐ ์์ ํ ์ ์๋ ๊ฒ ๋ํ ์ง๊ธ ์ด ์๊ฐ์ ์ถ๋ฟ์ด๋ค. ๊ธด ์ถ์ด๋ ์งง์ ์ถ์ด๋ ๋์ผํ๋ค. ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ์์ ํ ์ ์๋ ๊ฒ์ ์ง๊ธ ์ค์ณ ์ง๋๊ณ ์๋ ํ์ฌ๋ฐ์ ์๋ค. ๊ณผ๊ฑฐ๋ฅผ ์์ด๋ฒ๋ฆฌ๊ฑฐ๋ ๋ฏธ๋๋ฅผ ์์ด๋ฒ๋ฆด ์๋ ์๋ค. ์ด๋ป๊ฒ ์ง๊ธ ๊ฐ๊ณ ์์ง ์์ ๊ฒ์ ์์ด๋ฒ๋ฆด ์ ์๊ฒ ๋๊ฐ? ใ
-๋ง๋ฅด์ฟ ์ค ์์ฐ๋ ๋ฆฌ์ฐ์ค, ๋ช ์๋ก, 2.14
"์ด์ ๋ ์ง๋๊ฐ ๊ณผ๊ฑฐ์, ๋ด์ผ์ ๋ค๊ฐ์ฌ ๋ฏธ๋์ง๋ง, ์ค๋์ ์ ๋ฌผ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ํ์ฌ(present)๋ฅผ ์ ๋ฌผ(present)์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ด์ ๋ ์ฌ๊ธฐ์ ์๋ค."
์ฐ๋ฆฌ๋ ํ์ฌ๋ง์ ์์ ํ๋ค. ๊ทธ ํ์ฌ์๋ ๋ง๋ฃ์ผ์ ์๋ค. ๊ทธ๊ฒ๋ ๋ง๋ฃ์ผ์ด ๋๋ฌด ๋นจ๋ฆฌ ๋ค๊ฐ์จ๋ค. ๊ทธ๋์ ํ์ฌ๋ฅผ ์ฆ๊ฒจ์ผ ํ๋ค. ์ด๊ฒ๋ง์ด ์ฐ๋ฆฌ ์ ์์ ๋ฅผ ํตํด ์ง์๋๋ ๊ฒ์ด๋ค.
ํ๋ฃจ๋ ๋๋ฌด๋๋ ์งง๊ณ ํ์ฌ๋ ๋งค ์๊ฐ ์ง๋๊ฐ๋ค. ํ์ฌ๋ฅผ ์ฆ๊ธฐ๊ณ , ๊ฑด๊ฐํ๊ฒ ์๋น๋ฅผ ํ๋ ๊ฒ์ด ์ง๋๊ฐ ๊ณผ๊ฑฐ์ ๋ค๊ฐ์ฌ ๋ฏธ๋์ ๋ํ ์์์ด๋ค.
๐ฅ - ํ ๋ผ ๋ค ํค์ฐ๊ณ ์ถ์๋๋ฐ ์ง์ค์ด ๋๋ฌด ์๋ผ์ ์คํจ.. ์ค๋์ ์ผ์ฐ ์ฌ๊ณ ๋ด์ผ ์ผ์ฐ๋์์ ๋ ์ด์ฌํ ํ๊ธฐ