상세 컨텐츠

본문 제목

[BOJ] 14501: 퇴사 (C++)

PROGRAMMING/Algorithm

by koharin 2024. 3. 24. 22:25

본문

728x90
반응형
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int n; // n: 상담 가능한 날

    cin >> n;
    vector<int> DP(n+1,0);
    vector<int> T(n+1,0);
    vector<int> P(n+1,0);

    for(int i=1; i<=n; i++){
        int t, p; // t: 상담별 기간, p : 상담 시 수익
        cin >> t >> p;
        if((i+t-1)<=n){ // n보다 큰 경우는 넣지 않음
            T[i] = t;
            P[i] = p;
        }
    }

    for(int i=1; i<=n; i++){
        // i-1일 지난 후 최대값 = max(i+T[i]-1번째 상담 수행했을 때 최대값, i-1번째날까지 최대값+i번째날 수익값)
        if((i+T[i]-1)<=n) DP[i+T[i]-1] = max(DP[i+T[i]-1], DP[i-1] + P[i]);
        // 오늘 쉴 때 최대 수익 업데이트
        DP[i] = max(DP[i], DP[i-1]);
        //cout << "DP[" << i << "]: " << DP[i] << endl;
    }
    cout << DP[n] << endl;
    return 0;
}

728x90
반응형

관련글 더보기