C++)
#include <iostream>
#include <algorithm>
using namespace std;
int arr[17][2]; // 0 : 상담 기간 , 1 : 받을 수 있는 금액
int ans[17]; // 0 : 누적 상담 기간, 1 : 누적 금액
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> arr[i][0] >> arr[i][1];
for (int i = 1; i <= n; i++) {
int day = arr[i][0];
int money = arr[i][1];
ans[i] = max(ans[i-1], ans[i]);
int nextDay = i + day - 1;
if (nextDay<= n)
ans[nextDay] = max(ans[i-1] + money, ans[nextDay]);
}
cout << ans[n];
return 0;
}
Python)
import sys
read = sys.stdin.readline
n = int(read().rstrip())
arr = [list(map(int, read().rstrip().split())) for _ in range(n)]
ans = [0] * (n+1)
for i, value in enumerate(arr, start = 1):
day, money = value[0], value[1]
ans[i] = max(ans[i], ans[i-1])
if i + day - 1 > n:
continue
ans[i+day-1] = max(ans[i-1] + money, ans[i+day-1])
print(ans[n])'백준 2 > DP' 카테고리의 다른 글
| [백준 1904] 01타일 (Java) (0) | 2021.01.13 |
|---|---|
| [백준 9251] LCS (Java) (0) | 2020.12.16 |
| [백준 9095] 1,2,3 더하기 (0) | 2020.12.07 |
| [백준 11057] 오르막수 (0) | 2020.12.07 |
| [백준 9465] 스티커 (0) | 2020.12.07 |