
https://dvpdvp.tistory.com/59?category=932820
[백준] 11052번 카드 구매하기 JAVA
문제를 요약하면 n개의 카드를 제일 비싼 값을 주고 사고싶다는 미친 문제 1~n개가 들어있는 팩이 각각 가격이 다르다. 예를 들어 3개의 카드를 살 때 경우의 수 1. 1개팩 3개 2. 1개팩 1개 2개팩 1개
dvpdvp.tistory.com
이전 포스팅 11052번이랑 매우 유사한 문제
풀이 변경점은
1. MAX -> MIN값으로 변경
2. 초기화를 기본값인 0이 아니라 카트 팩의 가격으로 초기화해줄 것
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int cnt = Integer.parseInt(reader.readLine());
String[] priceStringArr = reader.readLine().split(" ");
int[] priceArr = new int[cnt+1];
int[] lowestPriceArr = new int[cnt+1];
// 배열 정수형으로 초기화
// 최솟값을 구하는데 0으로 초기화하면 무조건 출력값이 0이 되니까, 입력받은 카드값으로 초기화
for(int i=0; i<priceStringArr.length; i++) {
priceArr[i+1] = Integer.parseInt(priceStringArr[i]);
lowestPriceArr[i+1] = Integer.parseInt(priceStringArr[i]);
}
for(int i=2; i < cnt+1; i++) {
for(int j=1 ; j < i; j++) {
lowestPriceArr[i] = Math.min(lowestPriceArr[i-j] + priceArr[j], lowestPriceArr[i]);
}
}
System.out.println(lowestPriceArr[cnt]);
}
}'PROGRAMMING > ALGORITHM' 카테고리의 다른 글
| [프로그래머스] K번째수 JAVA (0) | 2021.05.20 |
|---|---|
| [백준] 15990번 1, 2, 3 더하기 5 JAVA (0) | 2021.05.17 |
| [백준] 11052번 카드 구매하기 JAVA (0) | 2021.05.13 |
| [백준] 9095번 1, 2, 3 더하기 JAVA (0) | 2021.05.12 |
| [백준] 1463번 1로 만들기 JAVA (0) | 2021.05.06 |