[BOJ] 14501번 퇴사

Apr 9, 2019


https://www.acmicpc.net/problem/14501

dp 문제입니다. ti일 후에 얻을 수 있는 돈을 비교했을 때,

p[i]+’이 날까지 벌 수 있는 돈’ 과 p[i+t[i]]를 비교하여 더 높은 값을 넣어 주면 됩니다.

#include <iostream>
using namespace std;
int dp[16];
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n;
    int t[16] = { 0, };
    int p[16] = { 0, };
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> t[i] >> p[i];
    for (int i = 1; i <= n; i++) {
        if (dp[i] > dp[i + 1])dp[i + 1] = dp[i];//내일보다 오늘이 더 많이벌면
        if (dp[i] + p[i] > dp[i + t[i]]) {//t[i]일 후 dp[i]값과 비교
            dp[i + t[i]] = dp[i] + p[i];
        }
    }
    cout << dp[n + 1];//돈은 일 끝나고 받는걸로 가정했으므로
}
  • 나 혼자 말하고 나 혼자 듣는 말

….