ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
12865๋ฒ: ํ๋ฒํ ๋ฐฐ๋ญ
์ฒซ ์ค์ ๋ฌผํ์ ์ N(1 โค N โค 100)๊ณผ ์ค์๊ฐ ๋ฒํธ ์ ์๋ ๋ฌด๊ฒ K(1 โค K โค 100,000)๊ฐ ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑฐ์ณ ๊ฐ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ W(1 โค W โค 100,000)์ ํด๋น ๋ฌผ๊ฑด์ ๊ฐ์น V(0 โค V โค 1,000)
www.acmicpc.net
๋ฌธ์ ํ์ด

- ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค ๋, list[์ ํํ๊ณ ์ ํ๋ ์์ดํ ์ ์][์ต๋ ๊ฐ์น]๋ก 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ ๋ค.
- list[0]์ ์๋ฌด๊ฒ๋ ์ฐ์ฃผํ์ง ์์ ์ํ, ์ต์ด์ ๋ณผ๋ฅจ์ ์ ์ฉํ ์ํ์ด๋ฏ๋ก list[0]์ ๊ฐ๋ค์ 0์ด๋ค.
- 2์ค ๋ฐ๋ณต๋ฌธ์ ์ํํ๋ฉด์ list[1], list[2] ... ๋ก ์ ๊ทผํ๋ฉฐ ๊ฐ๋ฐฉ์ ๋ฃ์ ์ ์๋ ์์ดํ ์ ์ํ๋ฅผ ๊ธฐ๋กํ๋ค.
- n * m ๋งํผ์ ๋ฐ๋ณต๋ฌธ์ ์ํํ๋ฉด, ์ต๋ ๊ฐ์ด์น์ ์ฒดํฌํ๋ค.
-
์ฆ, ์ด์ ์ ์ ํํ ์์ดํ
์ ๊ฐ์ด์น๋ฅผ ์ ์งํ๋ฉด์, ํ์ฌ ์ ํํ ์์ดํ
์ ๋ด์์ ๋์ ์ํ๋ฅผ ๋ฐ์ํ๋ค.
- ์์ดํ ์ ๋ด์ ์ ์๋๊ฐ?, ๊ฐ์ด์น๋ ์ด์ ๊ณผ ๋น๊ตํ์ฌ ์ด๋๊ฒ์ ์ ํํ๋๊ฒ ์ต๋๊ฐ์ธ๊ฐ?
- ๋ฐ๋ผ์ ์ ํ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด, ํ์ฌ ์์ดํ ์ ๊ฐ๋ฐฉ์ ๋ฃ์ ์ ์๋ ๊ฒฝ์ฐ์ ํด๋น ์์ดํ ์ ๊ฐ์ด์น๋ฅผ ๋ฐ์ํ๋๊ฐ? ์๋๊ฐ์ ๋ฐ๋ผ ์ต๋๊ฐ์ ๊ณ์ฐํ ์ ์๋ค.
์ฝ๋
from sys import stdin
if __name__ == "__main__":
n, k = map(int, stdin.readline().split())
items = [[0, 0]] + [list(map(int, stdin.readline().split())) for _ in range(n)]
dp = [[0] * (k + 1) for _ in range(n + 1)]
for idx in range(1, n + 1):
weight, value = items[idx]
for bag_weight in range(1, k + 1):
if bag_weight < weight:
dp[idx][bag_weight] = dp[idx - 1][bag_weight]
else:
dp[idx][bag_weight] = \
max(dp[idx - 1][bag_weight - weight] + value, dp[idx - 1][bag_weight])
print(dp[n][k])
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 15486 ํด์ฌ 2 (0) | 2020.08.29 |
---|---|
๋ฐฑ์ค: 5557 1ํ๋ (0) | 2020.08.29 |
๋ฐฑ์ค: 1495 ๊ธฐํ๋ฆฌ์คํธ (0) | 2020.08.27 |
๋ฐฑ์ค: 11058 ํฌ๋ฆฌ๋ณด๋ (0) | 2020.08.26 |
๋ฐฑ์ค: 2294 ๋์ 2 (0) | 2020.08.26 |
๋๊ธ
CEO๊ธฐ๊ณ๋ ์ํค๋ ๋๋ก ๋์ํ๋ฉฐ, ์ฌ๋์ ์ค์๋ก ์ธํด ๊ธฐ๊ณ๋ ์ ์์๋ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
ํ๋ก๊ทธ๋๋จธ์ด์ง๋ง ์ด์คํ๊ฒ ์ปดํจํฐ๋ฅผ ๋์์์ผ ์ค๋ฅ์ ์ง๋ฉดํ๋ ์ข์ถฉ์ฐ๋ ๋ธ๋ก๊ทธ์
๋๋ค.
๋ํ ์์ํ๊ฒ ์ผ์๋ค๊ณผ ์๊ฐ๋ค์ ์ ๋ฆฌํ๊ณ ๊ธฐ๋กํ๊ณ ์์ต๋๋ค.
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ