알고리즘/삼성sw역량테스트 기출
삼성 SW 역량테스트 기출 :: 퇴사
happilee12
2018. 4. 9. 00:43
반응형
문제 링크 : 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;
}
반응형