하루일문
[백준] 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
코드
n, k = map(int, input().split())
tool = [[0,0]] + [list(map(int, input().split())) for _ in range(n)]
bag = [[0] * (k + 1) for _ in range(n+1)]
# 전체 물품 수
for i in range(1, n+1):
# 가방에 담을 수 있는 최대 무게
for j in range(1, k+1):
# 물품 당 무게가 최대 무게보다 안나간다면(가방에 들어갈 무게라면) 넣었을때랑 넣지 않을때 비교
if j - tool[i][0] >= 0:
bag[i][j] = max(bag[i-1][j], bag[i-1][j-tool[i][0]] + tool[i][1])
# 아니면 제외한 무게
else:
bag[i][j] = bag[i-1][j]
print(bag[n][k])
느낀점
가방은 정형화된 풀이가 있어서 이해하면서 외우는 게 중요해보인다.
'algorithm > baekjoon' 카테고리의 다른 글
[백준] 7569번 토마토(파이썬) (1) | 2023.04.16 |
---|---|
[백준] 9663번 N-Queen(파이썬) (0) | 2023.04.15 |
[백준] 1654번 랜선 자르기(파이썬)) (0) | 2023.04.13 |
[백준] 별찍기 -3(파이썬) (0) | 2023.04.10 |
[백준] 13777번 Hunt The Rabbit(파이썬) (0) | 2023.04.09 |