[ 백준 ] 14728 / 벼락치기

金弘均·2021년 9월 15일
0

Baekjoon Online Judge

목록 보기
70/228
post-thumbnail

# Appreciation

/*
 * Problem :: 14728 / 벼락치기
 *
 * Kind :: Dynamic Programming
 *
 * Insight
 * - 그냥 전형적인 DP 문제
 *   + 옛날 처음 풀었을 때 어려워서 체크했나보다
 */

# Code

//
//  BOJ
//  ver.C++
//
//  Created by GGlifer
//
//  Open Source

#include <iostream>
#include <cstring>

using namespace std;

#define endl '\n'

// Set up : Global Variables
/* None */

// Set up : Functions Declaration
/* None */


int main()
{
    // Set up : I/O
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    // Set up : Input
    int N, T;
    cin >> N >> T;
    int K[N+1], S[N+1];
    for (int i=1; i<=N; i++)
        cin >> K[i] >> S[i];

    // Process
    int dp[N+1][T+1]; /* dp[i][j] = j 시간동안 1~i 단원을 공부해서 얻을 수 있는 최대 점수 */
    memset(dp, 0, sizeof(dp));
    for (int i=1; i<=N; i++) {
        for (int j=1; j<=T; j++) {
            dp[i][j] = dp[i-1][j];
            if (j-K[i] >= 0) {
                dp[i][j] = max(dp[i][j], dp[i-1][j-K[i]]+S[i]);
            }
        }
    }

    // Control : Output
    cout << dp[N][T] << endl;
}

// Helper Functions
/* None */
profile
이런 미친 게임을 봤나! - 옥냥이

0개의 댓글