본문 바로가기

code/BOJ

백준 14501 퇴사

문제:

 

14501번: 퇴사

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

www.acmicpc.net

코드:

P[i]의 인덱스는 i == N - 1까지 유효 -> P[i] 사용 전 i < N chk(IN과 동일)

배열 쓰기 전에 boundary chk 필수

i == N까지 벌어들인 수익이 인정됨 -> 탈출조건 i > N

#include <iostream>
#define f(i, n) for(int i = 0; i < (n); ++i)
using namespace std;
int N;
int T[15], P[15];
int ans;
void BF(int i, int Ps) {
	if (i > N) return;
	if (Ps > ans) ans = Ps;
	BF(i + 1, Ps);
	if(i < N) BF(i + T[i], Ps + P[i]);
}
int main() {
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	cin >> N;
	f(i, N) cin >> T[i] >> P[i];
	BF(0, 0);
	cout << ans;
	return 0;
}