import sys
input = sys.stdin.readline
# 단원 개수, 총 시간
n, t = map(int, input().split())
dp = [0] * (t+1)
for _ in range(n):
k, s = map(int, input().split())
# 공부 시간, 배점
for i in range(t, -1, -1):
if i + k <= t:
dp[i+k] = max(dp[i] + s, dp[i+k])
print(dp[t])
개선된 코드
i+k <= t 를 검사하는 대신 반복문 범위를 k~t까지로 한정하고 돌림
import sys
input = sys.stdin.readline
# 단원 개수, 총 시간
n, t = map(int, input().split())
dp = [0] * (t+1)
for _ in range(n):
k, s = map(int, input().split())
# 공부 시간, 배점
=
for i in range(t, k-1, -1):
dp[i] = max(dp[i-k] + s, dp[i])
print(dp[t])