728x90
https://www.acmicpc.net/problem/16194
우선 입력으로 받은 카드의 가격들을 arr에다가 담는다. 이것들이 기저 조건들이 된다.
그 다음엔 2개가 들어있는 카드팩부터, n개 들어있는 카드팩을 사는게 이득인지, n-k개 카드팩 + k개 카드팩 을 사는게 이득인지를 k = 1부터 n-1까지 돌려보면 쉽게 구할 수 있다.
최대 카드팩 장수가 1000이고, O(n^2)로 코드가 돌아가기 때문에 충분히 시간내에 풀 수 있다.
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 arr[1001];
int solution(int num){
for(int i=2; i<=num;i++){
for(int j=1; j<i;j++){
arr[i] = min(arr[i],arr[i-j]+arr[j]);
}
}
return arr[num];
}
int main(void){
cin>>n;
for(int i=1; i<=n;i++)
cin>>arr[i];
cout<<solution(n);
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
'알고리즘 > 백준' 카테고리의 다른 글
백준 2098 외판원 순회 - 비트마스킹,dp,dfs c++ (0) | 2020.03.12 |
---|---|
백준 14226 이모티콘 - 2차원 배열로 상태저장 bfs - c++ (0) | 2020.03.10 |
백준 17779 - 게리맨더링2 - 시뮬레이션 (c++) (0) | 2020.03.04 |
백준 13335 트럭 - 큐 2개를 활용하자 c++ (0) | 2020.02.25 |
백준 1261 알고스팟: bfs와 caching 쓰는 문제 c++ (0) | 2020.02.23 |