danbibibi
article thumbnail

문제

문제 바로가기> BOJ 14501번: 퇴사

 

14501번: 퇴사

첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.

www.acmicpc.net

 

풀이

dp를 이용해서, 뒤에서부터 거꾸로 오면서, 백준이가 얻을 수 있는 최대 수익을 구해 줄 수 있다.

 

`dp[i]` : i+1 ~ N일 기간, 백준이가 얻을 수 있는 최대 수익

 

#include<iostream>
#include<vector>
#define MAX 16
using namespace std;

int N;
int dp[MAX];
pair<int, int> consult[MAX]; // time, pay

void input(){
    cin >> N;
    
    int t, p;
    for(int i=0; i<N; i++){
        cin >> t >> p;
        consult[i] = {t, p};
    }
}

void solution(){
    for(int day=N-1; day>=0; day--){
        if(day + consult[day].first > N) dp[day] = dp[day+1]; // 회사에 없어서 상담이 불가능한 경우
        else dp[day] = max(dp[day+1], dp[day+consult[day].first]+consult[day].second);
        
    } cout << dp[0]; // 백준이가 얻을 수 있는 최대 수익
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    input();
    solution();
}

'문제 풀이 > SW 역량 테스트' 카테고리의 다른 글

BOJ 15685번: 드래곤 커브  (0) 2023.01.29
BOJ 15683번: 감시  (0) 2023.01.26
BOJ 14891번: 톱니바퀴  (0) 2023.01.23
BOJ 14890번: 경사로  (0) 2023.01.22
BOJ 21608번: 상어 초등학교  (0) 2023.01.17
profile

danbibibi

@danbibibi

꿈을 꾸는 시간은 멈춰 있는 것이 아냐 두려워하지 마 멈추지 마 푸른 꿈속으로