반응형

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

 

11052번: 카드 구매하기

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

www.acmicpc.net

 

1개 최대 가격 : max(dp[1], p[1] + dp[0])

2개 최대 가격 : max(dp[2], p[1] + dp[1], p[2] + dp[0])

3개 최대 가격 : max(dp[3], p[1] + dp[2], p[2] + dp[1], p[3] + dp[0])

n개 최대 가격 : max(dp[n], p[1...n] + dp[(n-1)...0])

 

#include <iostream>
#include <algorithm>
int main() {
	int n, p[1001] = { 0 }, dp[1001] = { 0 };
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) scanf("%d", &p[i]);
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= i; j++)
			dp[i] = std::max(dp[i], dp[i-j] + p[j]);
	printf("%d", dp[n]);
}
반응형

'Algorithm' 카테고리의 다른 글

백준 15990 : 1, 2, 3 더하기 5  (0) 2021.11.12
백준 16194 : 카드 구매하기 2  (0) 2021.11.12
백준 15988 : 1, 2, 3 더하기 3  (0) 2021.11.12
백준 11727 : 2xn 타일링 2  (0) 2021.11.12
백준 14226 : 이모티콘  (0) 2021.11.12

+ Recent posts