컴퓨터 공학/백준
[백준] JAVA 자바 : 카드 구매하기 2 (16194번)
kim-dev
2024. 1. 23. 13:25
반응형
사실 직전 문제인 <카드 구매하기>에서 부등호 하나만 바꿔주면 해결되는 문제…
알고리즘 역시 모두 똑같아서… 따로 부연 설명은 필요 없을 듯.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BuyingCards2 {
static int[] dp;
static int[] price;
public static int stoi(String str) {
return Integer.parseInt(str);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = stoi(br.readLine());
dp = new int[N+1]; // 금액의 최댓값을 저장하는 dp 배열
price = new int[N+1]; // 가격 Pi를 저장하는 배열
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for (int i=1; i<=N; i++) {
price[i] = stoi(st.nextToken());
}
dp[1] = price[1];
for (int i=2; i<=N; i++) {
int min = price[i]; // N개를 한 번에 살 수 있는 가격과 비교
for (int j=1; j<i; j++) { // 바텀탑 방식
int tmp = dp[j] + dp[i-j];
if (tmp < min) { min = tmp; }
}
dp[i] = min;
}
System.out.println(dp[N]);
}
}
로그인
www.acmicpc.net
작성일자: 2023-11-26