최고 17kg의 무게를 저장할 수 있는 가방이 있다. 그리고 각각 3kg, 4kg, 7kg, 8kg, 9kg의
무게를 가진 5종류의 보석이 있다. 이 보석들의 가치는 각각 4, 5, 10, 11, 13이다.
이 보석을 가방에 담는데 17kg를 넘지 않으면서 최대의 가치가 되도록 하려면 어떻게 담아야
할까요? 각 종류별 보석의 개수는 무한이 많다. 한 종류의 보석을 여러 번 가방에 담을 수 있
다는 뜻입니다.
▣ 입력설명
첫 번째 줄은 보석 종류의 개수와 가방에 담을 수 있는 무게의 한계값이 주어진다.
두 번째 줄부터 각 보석의 무게와 가치가 주어진다.
가방의 저장무게는 1000kg을 넘지 않는다. 보석의 개수는 30개 이내이다.
▣ 출력설명
첫 번째 줄에 가방에 담을 수 있는 보석의 최대가치를 출력한다.
▣ 입력예제 1
4 11
5 12
3 8
6 14
4 8
▣ 출력예제 1
28
해설 : 5g 1개, 3g 2개를 선택해서 28가치가 최대이다.
n, m= map(int, input().split())
w=[]
p=[]
k=[]
for i in range(n) :
a,b=map(int,input().split())
k.append((a,b))
k.sort()
for i in range(len(k)):
w.append(k[i][0])
p.append(k[i][1])
......모르겠어서 포기함
n, m= map(int, input().split())
dy=[0]*(m+1)
for i in range(n) :
w,v=map(int,input().split())
for j in range(w,m+1) :#자신이 해당하는 무게에서부터 가방의 무게까지
dy[j]=max(dy[j], dy[j-w]+v) #기존의 값 , j무게 가방에서 w만큼 뺀것에 가치를 더한 것
print(dy[m])
i≥weight[j]이면 dyn[i][j]=max(dyn[i][j-1],max(dyn[i-weight[j]][j]+value[j]))
i<weight[j]이면 dyn[i][j]=dyn[i][j-1]
이렇게 하면 답은 dyn[가방 크기][마지막 물건]
s=[]
n,m=map(int,input().split())
for i in range(n) :
w, v = map(int,input().split())
s.append((w,v))
dy=[0]*(m+1)
for i in range(n) :
for j in range(s[i][0],m+1) :
dy[j]=max(dy[j], dy[j-s[i][0]]+s[i][1])
print(max(dy))