코드
#include <iostream>
#include <algorithm>
using namespace std;
int t[16];
int p[16];
int dp[16];
int main(){
int n;
cin >> n;
int idx = 0;
for(int i = 1; i <= n; i++){
cin >> t[i] >> p[i];
}
for(int i = n; i > 0; i--){
idx = i + t[i];
if(idx > n+1){
dp[i] = dp[i+1];
}
else{
dp[i] = max(dp[i+1], dp[idx] + p[i]);
}
}
cout << dp[1] << endl;
return 0;
}
알게된 점
탑다운 dp 방법이었다.
기억해 두어야 겠다.
'하루하나코딩' 카테고리의 다른 글
Github 업로드 시작 (0) | 2023.03.28 |
---|---|
백준 1759 : 암호만들기 c++ (0) | 2023.03.06 |
백준 9095 : 1, 2, 3 더하기 c++ (0) | 2023.03.06 |
프로그래머스 : 입국심사 c++ (0) | 2023.02.22 |
백준 1654 : 랜선 자르기 python (0) | 2023.02.21 |