n,k=map(int,input().split())
total=[[0,0]]
dp=[[0 for i in range(k+1)] for i in range(n+1)]#칼럼(무게), 열(개수) 2차원 배열
for i in range(n):
w,v=map(int,input().split())
total.append([w,v])
for i in range(1,n+1):
for j in range(1,k+1):
w=total[i][0]
v=total[i][1]
if w>j:#무게보다 크면 넣을 수 없음
dp[i][j]=dp[i-1][j] #현재 이전의 물건들의 가중치만 저장
else:#무게보다 작다면
#현재 물건을 담을 것인지 아닐 것인지 결정
dp[i][j]=max(dp[i-1][j-w]+v,dp[i-1][j])
print(dp[n][k])
접근 방법