BOJ 11052: 카드 구매하기 https://www.acmicpc.net/problem/11052
카드 N개가 포함된 카드팩
과 같이 총 N가지가 존재
한다.DP
로 해결한다.i개
의 카드를 사야할 때import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 사려고 하는 카드 수
int N = Integer.parseInt(br.readLine());
// 카드 개수 별 가격 입력
int[] cards = new int[N + 1];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for (int i = 1; i <= N; i++) {
cards[i] = Integer.parseInt(st.nextToken());
}
// 카드 i개 구입할 때의 가격 기록할 DP 배열
int[] dp = new int[N + 1];
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= i; j++) {
dp[i] = Math.max(dp[i], dp[i - j] + cards[j]);
}
}
System.out.println(dp[N]);
}
}