본문 바로가기

알고리즘/삼성sw역량테스트 기출

삼성 SW 역량테스트 기출 :: 퇴사

반응형

문제 링크 : https://www.acmicpc.net/problem/14501

난이도 : 하

/*
 * 퇴사 : https://www.acmicpc.net/problem/14501
 */

#include <stdio.h>
#include <iostream>

#define FOR(i, n) for(int i = 0 ; i < n; i ++)
using namespace std;
int n;
int t[15], p[15];
int mmax; // 최대 수익을 저장할 변수
void init(){
    cin >> n;
    FOR(i, n){
        cin >> t[i];
        cin >> p[i];
    }
    mmax = INT32_MIN;
}
// i-1까지 수익이 prev일때, i번째 상담을 하거나 하지 않을 때의 수익 계산
void solve(int i, int prev){
    if(i>=n) mmax = max(prev, mmax);
    else {
        //i번째 상담을 하는경우
        if(i+t[i]<=n) // *******************인덱스가 넘어갈 수 있음에 주의
            solve(i + t[i], prev + p[i]);
        //i번째 상담을 하지 않는 경우
        solve(i + 1, prev);
    }

}
int main(){
    init();
    solve(0, 0);
    cout << mmax << endl;
}

 

반응형