알고리즘/백준

[백준/c++] 11052번: 카드 구매하기

녕이 2022. 2. 28. 20:09
728x90

 

https://www.acmicpc.net/problem/11052

 

11052번: 카드 구매하기

첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000)

www.acmicpc.net

 

 

n개 이전의 값들의 금액 최댓값을 구하다 보면 메모이제이션으로 n개의 카드를 구매하는 금액의 최댓값을 구할 수 있다.

 

#include <iostream>
#include <algorithm>
#define num 1002
using namespace std;
int n, p[num], dp[num];

void input(){
    cin >> n;
    for(int i=1; i<=n; i++) cin >> p[i];
}

void solution(){
    dp[0] = p[0] = 0;
    for(int i=1; i<=n; i++){
        for(int j=1; j<=i; j++){
            dp[i] = max(dp[i], dp[i-j] + p[j]);
        }
    }
    
    cout << dp[n] << '\n';
}

int main(){
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    input();
    solution();
    return 0;
}

 

 

 

 

 

💡공부 및 기록용 블로그이므로 오류가 있을 수 있습니다.💡

만약 문제에 오류나 오타가 있다면 댓글로 알려주세요➿
언제나 환영합니다. 감사합니다. 화이팅!

 

 

728x90