[BOJ][삼성기출] 14501. 퇴사

gyeong·2021년 3월 5일
0

PS

목록 보기
18/46

풀이

#include <iostream>

using namespace std;

typedef struct info {
	int T;
	int P;
} info;

int N;
info sch[16];
int rst = 0;

void input() {
	cin >> N;
	for (int i = 1; i <= N; i++) {
		cin >> sch[i].T >> sch[i].P;
	}
}

void dfs(int curr, int pay) {
	if (curr + sch[curr].T - 1 > N) return;
	if (rst < pay) rst = pay;
	
	for (int i = curr + sch[curr].T; i <= N; i++) {
		dfs(i, pay + sch[i].P);
	}
}

int main() {
	input();
	for (int i = 1; i <= N; i++) {
		dfs(i, sch[i].P);
	}
	cout << rst << endl;
}

M개중 N개를 고르는 문제.
넘겨줄 파라미터를 잘 골라야 하며 for 문 작성 시 주의.

profile
내가 보려고 만든 벨로그

0개의 댓글