각 날짜에는 위와같이 상담 소요일과 수익이 나타난다. 주어진 상황에서 얻을 수 있는 최대 수익을 나타내시오.
가장 기본적인 형태의 bruteforce 문제인데 스스로의 힘으로 풀지 못해서 너무 아쉽고 분했다...ㅠ
#include <iostream>
using namespace std;
static int N, ans;
static pair<int, int> consult[15];
void solve(int day, int sum) {
if (day > N) return;
if (day == N && ans < sum) {ans = sum; return;}
solve(day + 1, sum); // 해당 날짜를 선택하지 않는 경우
solve(day + consult[day].first, sum + consult[day].second); // 선택하는 경우
}
int main() {
ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
cin >> N;
for (int i = 0; i < N; ++i) cin >> consult[i].first >> consult[i].second;
solve(0, 0);
cout << ans << '\n';
}