#Algorithm
문제 번호
12865번(G5)
알고리즘 + 이론
동적 계획 알고리즘
가방의 무게를 하나씩 늘려가며 모든 물건을 넣어보며 탐색한다.
정답 코드
# 12865번
# n개를 받고 가방 무게를 하나씩 늘려나가면서 최대 가치 구하기
# dp[i][j] = i번째 물건까지 고려했을 때, j무게일 때의 최대 가치
n, k = map(int, input().split())
items = [list(map(int, input().split())) for _ in range(n)]
dp = [[0] * (k + 1) for _ in range(n + 1)]
for i in range(1, n + 1):
w, v = items[i - 1]
for j in range(1, k+1):
if j < w:
dp[i][j] = dp[i - 1][j]
else:
dp[i][j] = max(dp[i-1][j], dp[i-1][j-w]+v)
print(dp[n][k])
느낀점 & 피드백
문제 준서가 주인공임
dp 책에서 읽고 이해한대로 하니까 쉬웠다. 좀 다른 활용방식을 가진 dp 문제도 풀어봐야겠다.
이 글이 도움이 되셨나요?