반응형
문제 링크 : 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;
}
반응형
'알고리즘 > 삼성sw역량테스트 기출' 카테고리의 다른 글
삼성 SW 역량테스트 기출 :: 연구소 (0) | 2018.04.09 |
---|---|
삼성 SW 역량테스트 기출 :: 연산자 끼워넣기 (0) | 2018.04.09 |
삼성 SW 역량테스트 기출 :: 경사로 (0) | 2018.04.09 |
삼성 SW 역량테스트 기출 :: 로봇 청소기 (0) | 2018.04.08 |