본문 바로가기
SWE/코테

[성실코딩 7일차] 백준 #14501 퇴사 / DP

by S나라라2 2018. 10. 20.
반응형

77ㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑㅑ DP문제 처음으로 풀어서 맞았다!!!!!!!!!!!!!!!!!!! 흑 ㅠㅠ 


근데 이게 쉬운 문제인걸 수도 있고 이것만 규칙성이 바로 보여서 풀린걸 수도 있지 가 아니라 그냥 좋음!!!!!!! 드디어 풀었당!!!!!!!!!!!!!!!!!!!!


오래 걸리지도 않앗음 dp도 하며 ㄴ되는거였습니당!!!!!!!!!!!!!!!!!! 행복행복



문제풀이는 종이에 열심히 했기때문에 안적으래욤



#include<iostream>

using namespace std;

int table[2][16] = {0,}; // 1~15일
// table[0][] : 상담을 완료하는데 걸리는 기간
// table[1][] : 상담을 했을 때 받을 수 있는 금액

int DP[16] = { 0, };
int n; // 몇 일

// DP에서 _from 부터 n까지 최댓값 찾아서 return
int getmax(int _from) {
	int biggist = 0;
	for (int i = _from; i <= n; i++) {
		if (biggist < DP[i]) {
			biggist = DP[i];
		}
	}
	return biggist;
}

int main(void) {

	// 입력 받기
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> table[0][i] >> table[1][i]; 
	}

	// 연산
	for (int i = n; i > 0; i--) {
		// 상담을 완료하는데 걸리는 기간 check

		int period = table[0][i] + i - 1;  // 상담 필요한 기간 + 현재 날짜 -1 < n

		if (period <= n) { // 현재날짜에 주어진 상담을 진행할 수 있다면
			
			// 현재 주어진 상담 수행 후 받는 금액 + 현재 상담 완료 후 최대이익
			DP[i] = table[1][i] + getmax(period+1);
		}
	}

	// 출력
	cout << getmax(1) << endl;

	return 0;
}


반응형