Study hard

(c++)백준 14501번: 퇴사 본문

백준/DP

(c++)백준 14501번: 퇴사

Nimgnoej 2020. 9. 14. 14:34

www.acmicpc.net/problem/14501

 

14501번: 퇴사

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

www.acmicpc.net

[풀이]

DP로 풀 수 있는 문제였다.

DP[i]: i번째 날 상담하면 그 이후부터 최대로 받을 수 있는 이익

상담이 끝나는 날이 N+1보다 커지면 무시한다.

 

#include <iostream>
#include <algorithm>//max
using namespace std;

int N;
int T[16];
int P[16];
int DP[16] = { 0, };

void solution() {
	int ans = 0;
	for (int i = N; i >= 1; i--) {
		//상담이 끝나는 날이 N+1보다 크면
		if (i + T[i] > N + 1)
			continue;
		else {
			int Max = 0;
			for (int j = i + T[i]; j <= N; j++) {
				Max = max(Max, DP[j]);
			}
			DP[i] = P[i] + Max;
			ans = max(ans, DP[i]);
		}
	}
	cout << ans << '\n';
}

int main() {
	cin >> N;
	for (int i = 1; i <= N; i++) {
		cin >> T[i] >> P[i];
	}
	solution();
	return 0;
}

'백준 > DP' 카테고리의 다른 글

(c++)백준 10942번: 팰린드롬?  (0) 2020.09.14
(c++)백준 15486번: 퇴사 2  (0) 2020.09.14
(c++)백준 11060번: 점프 점프  (0) 2020.09.13
(c++)백준 11048번: 이동하기  (0) 2020.09.13
(c++)백준 11052번: 카드 구매하기  (0) 2020.06.10