https://www.acmicpc.net/problem/16194
16194번: 카드 구매하기 2
첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000)
www.acmicpc.net
저번에 풀었던 카드 구매하기 문제는 살 수 있는 카드팩중 최대값으로 사는 문제였는데 이 문제는 최소값을 구하는 문제이다.
https://dwshin-dev.tistory.com/43
[백준 C++] 11052번: 카드 구매하기
https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,
dwshin-dev.tistory.com
풀었던 방식은 같고 비교 한뒤 max로 더 큰 값을 넣어주는 함수를 min으로 바꿔 주었다.
#include <iostream>
#include <algorithm>
using namespace std;
int p[10001];
int dp[10001] = { 0 };
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
for (int i = 1;i <= n;i++) {
cin >> p[i];
}
for (int i = 1;i <= n;i++) {
dp[i] = p[i];
}
for (int i = 2;i <= n;i++) {
for (int j = 1; j < i; j++) {
dp[i] = min(dp[i - j] + p[j], dp[i]);
}
}
cout << dp[n] << "\n";
return 0;
}
사실 이전 문제를 풀때 min으로 잘못 풀었어서 오히려 더 수월하게 이번문제를 푼거같다.
'코딩테스트 > C++' 카테고리의 다른 글
| [백준 C++] 10844번: 쉬운 계단 수 (1) | 2024.04.21 |
|---|---|
| [백준 C++] 15990번: 1, 2, 3 더하기 5 (0) | 2024.04.21 |
| [백준 C++] 11052번: 카드 구매하기 (1) | 2024.04.21 |
| [백준 C++] 9095번: 1, 2, 3 더하기 (0) | 2024.04.21 |
| [백준 C++] 11727번: 2 x n 타일링 2 (0) | 2024.04.21 |