https://www.acmicpc.net/problem/11052
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
/******** 전역변수 ********/
int card[1002];
int answer[1002];
/******** 함 수 ********/
int main(void) {
/******** C++ INIT ********/
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
/******** 지역변수 ********/
int input1;
int input2;
/******** 구 현 ********/
cin >> input1;
// 카드팩 가격 입력
for (int i = 1; i <= input1; i++) {
cin >> input2;
card[i] = input2;
}
// 카드팩 1장만 구입할 때는 카드팩 1장의 가격 그대로
answer[1] = card[1];
// 구매하려는 카드팩 2장 이상일 때 동적 프로그래밍
for (int i = 2; i <= input1; i++) {
for (int j = 0; j <= i; j++) {
// 구매하려는 카드팩이 i장일때 => i장짜리 한개만 살지
// i-j장을 사고 나머지 j장을 살지 최대값 결정
// 예시) 구매하려는 카드팩이 2장일때
// 카드팩 2장 최대값 + 카드팩 0장
// 카드팩 1장 최대값 + 카드팩 1장
// 카드팩 0장 최대값 + 카드팩 2장
answer[i] = max(answer[i], answer[i - j] + card[j]);
}
}
cout << answer[input1];
}
'Algorithm > 백준' 카테고리의 다른 글
C++ 알고리즘 - 백준 33985 그거 왜 말해! (0) | 2025.05.26 |
---|---|
C++ 알고리즘 - 백준 1015 수열 정렬 (0) | 2025.02.21 |
C++ 알고리즘 - 백준 1026 보물 (0) | 2025.02.21 |
C++ 알고리즘 - 백준 1065 한수 (0) | 2025.02.20 |
C++ 알고리즘 - 백준 2193 이친수 (0) | 2025.02.13 |