Algorithm/Baekjoon
[백준] 16194: 카드 구매하기 2 - JAVA
Baspo8
2024. 5. 23. 17:34
https://www.acmicpc.net/problem/16194
풀이
카드팩들의 가격이 주어진다. 카드 i개가 포함된 카드팩의 가격은 Pi원이다.
dp 배열을 최대값으로 초기화 해주고, 탐색을 진행했다.
dp[0] + card[n]
dp[1] + card[n - 1]
.
.
.
dp[n] + card[0]
`dp[n]` 은 위 경우 중 최소가 되는 값이다.
메모리: 14528KB
시간: 144ms
언어: Java 11
import java.io.*;
import java.util.*;
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[] card = new int[n + 1];
int[] dp = new int[n + 1];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 1; i < n + 1; i++) {
card[i] = Integer.parseInt(st.nextToken());
dp[i] = Integer.MAX_VALUE;
}
for (int i = 1; i < n + 1; i++) {
for (int j = 1; j <= i; j++) {
dp[i] = Math.min(dp[i], dp[i - j] + card[j]);
}
}
System.out.println(dp[n]);
}
}