오답노트
[DP] BOJ 16194 카드 구매하기 2 본문
https://www.acmicpc.net/problem/16194
- 문제 파악
정수 N과 정수 P1~Pn이 주어진다. P1~ Pn를 적절히 조합하여 N을 만드는 경우의 수중에서 Pi 요소의 합이 최소값을 출력하라.
-정답
https://dhjkl123.tistory.com/54
와 같은문제인데 최대에서 최소로 문제가 변형 되었다.
1~N개를 만드는 수중에서 요소의 합의 최소값을 배열에 넣어가면서 N까지 증가 시키면 된다.
#include "bits/stdc++.h"
using namespace std;
int n;
int D[1002];
int arr[1002];
int main()
{
cin.tie(NULL);
ios::sync_with_stdio(0);
cin >> n;
cin >> arr[1];
D[1] = arr[1];
for (int i = 2; i <= n; i++)
{
cin >> arr[i];
D[i] = 10001;
for (int j = 0; j <= i / 2; j++)
{
int tmp = D[i - j] + D[j];
if (tmp > arr[i])
{
D[i] = min(arr[i], D[i]);
}
else
{
D[i] = min(tmp, D[i]);
}
}
}
cout << D[n];
}
'C,C++ > 코딩테스트' 카테고리의 다른 글
[DP] BOJ 10844 쉬운 계단 수 - 오답노트 (0) | 2022.05.11 |
---|---|
[DP] 15990 1, 2, 3 더하기 5 - 오답노트 (0) | 2022.05.10 |
[DP] BOJ 11052 카드 구매하기 (0) | 2022.05.10 |
[DP] BOJ 11727 2Xn 타일링 2 - 오답노트 (0) | 2022.05.09 |
[비트마스크] BOJ 1182 부분수열의 합 (0) | 2022.05.09 |