n, k = map(int, input().split())
wv = [[0,0]]
dp = [[0]*(k+1) for _ in range(n+1)]
for i in range(n):
wv.append(list(map(int, input().split())))
for i in range(1, n+1):
for j in range(1, k+1):
w = wv[i][0]
v = wv[i][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])
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][동적 계획법1] 9507. Generations of Tribbles (파이썬/Python) (0) | 2021.10.12 |
---|---|
[백준][정수론 및 조합론] 3036. 링 (파이썬/Python) (0) | 2021.10.07 |
[백준][분할 정복] 1629. 곱셈(파이썬/Python) (0) | 2021.10.05 |
[백준][그리디 알고리즘] 20044. Project Teams(파이썬/Python) (0) | 2021.10.04 |
[백준][그리디 알고리즘] 14487. 욱제는 효도쟁이야!! (파이썬/Python) (0) | 2021.10.04 |