반응형
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; }
반응형