[URL]
https://www.acmicpc.net/problem/14501
14501번: 퇴사
첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.
www.acmicpc.net
[풀이 과정]
1. 조건에 맞게 기본 DFS 시전
2. sum += PAY[pos];
3. pos: 1~ N까지 다 검사 후 sum 중 최대값 출력
[소스 코드]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | // 4. 퇴사 // https://www.acmicpc.net/problem/14501 #include <stdio.h> #include <algorithm> using namespace std; int N; int Time[16]; int Pay[16]; int cand[987654]; int cnt = 0; int Max = 0; void input() { scanf("%d", &N); for (int i = 0; i < N; i++) { scanf("%d %d", &Time[i], &Pay[i]); } } void dfs(int pos, int sum) { if (pos == N) { cand[cnt++] = sum; return; } // pos위치 인덱스 값 선택O if (pos + Time[pos] <= N) { dfs(pos + Time[pos], sum + Pay[pos]); } // pos위치 인덱스 값 선택X dfs(pos + 1, sum); } int main() { input(); dfs(0, 0); for (int i = 0; i < cnt; i++) { Max = max(cand[i], Max); } printf("%d\n", Max); return 0; } | cs |
'Algorithm > 백준' 카테고리의 다른 글
[BOJ] - 2468. 안전 영역 (0) | 2019.08.20 |
---|---|
[BOJ] - 17281. 야구 (0) | 2019.08.13 |
[BOJ] - 3190. 뱀 (0) | 2019.08.05 |
[BOJ] - 17143. 낚시왕 (0) | 2019.07.31 |
17140. - 이차원 배열과 연산 (0) | 2019.07.16 |