#문제
https://www.acmicpc.net/problem/11052
#작성 코드
TOP-DOWN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#include <iostream>
using namespace std;
int n;
int cards[1001];
int dp[1001];
int buy(int n){
if( n==0 ){
return 0;
}
if( dp[n]!=0 ){
return dp[n];
}
for(int i=1; i<=n; i++){
dp[n] = max(dp[n], buy(n-i)+cards[i]);
}
return dp[n];
}
int main(){
cin>>n;
for(int i=1; i<=n; i++){
cin>>cards[i];
}
cout<<buy(n)<<'\n';
return 0;
}
|
cs |
BOTTOM-UP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <iostream>
using namespace std;
int n;
int cards[1001];
int dp[1001]; // dp[i] : i개 카드 구매할 수 있는 최대 지불 금액
int main(){
cin>>n;
for(int i=1; i<=n; i++){
cin>>cards[i];
}
for(int i=1; i<=n; i++){
for(int j=1; j<=i; j++){
dp[i] = max(dp[i], dp[i-j]+cards[j]);
}
}
cout<<dp[n]<<'\n';
return 0;
}
|
cs |
##
'BOJ' 카테고리의 다른 글
BOJ 2309번 :: 일곱 난쟁이 (0) | 2020.02.03 |
---|---|
BOJ 16500번 :: 문자열 판별 (0) | 2020.02.03 |
BOJ 1699번 :: 제곱수의 합 (0) | 2020.02.02 |
BOJ 9465번 :: 스티커 (0) | 2020.02.02 |
BOJ 2618번 :: 경찰차 (0) | 2020.02.01 |