목차

벼락치기

ps
링크acmicpc.net/…
출처BOJ
문제 번호14728
문제명벼락치기
레벨골드 5
분류

DP

시간복잡도O(nW)
인풋사이즈n<=100, W=10000
사용한 언어Python 3.11
제출기록31256KB / 116ms
최고기록116ms
해결날짜2023/08/31

풀이

코드

"""Solution code for "BOJ 14728. 벼락치기".

- Problem link: https://www.acmicpc.net/problem/14728
- Solution link: http://www.teferi.net/ps/problems/boj/14728

Tags: [knapsack] [dp]
"""

import sys


def main():
    N, T = [int(x) for x in sys.stdin.readline().split()]
    K_and_S = [[int(x) for x in sys.stdin.readline().split()] for _ in range(N)]

    dp = [0] * (T + 1)
    for k, s in K_and_S:
        for t, dp_t, dp_p in zip(range(T + 1), dp, dp[k:]):
            if dp_p + s > dp_t:
                dp[t] = dp_p + s

    print(max(dp))


if __name__ == '__main__':
    main()