저번 문제와는 반대로 최소 비용을 구하는 문제이다!!
여기서는 최솟값 초기화를 해줘야한다 왜냐하면 배열을 처음 선언할 때는 0으로 초기화가 되기 때문이다!
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] p = new int[n + 1];
int[] dp = new int[n + 1];
for (int i = 1; i <= n; i++) {
int num = sc.nextInt();
p[i] = num;
}
for (int i = 1; i <= n; i++) {
dp[i] = p[i]; //최솟값 초기화!! 꼭 해줘야함. 이전 문제에서는 최댓값을 구하는거라 어차피 dp배열 초깃값인 0이랑 다른
//배열 이랑 비교하면 당연히 다른 배열이 커서 초기화 안해도 되는데 이 문제는 최솟값 구하는거라 해줘야함
for (int j = 1; j <= i; j++) {
dp[i] = Math.min(dp[i], p[j] + dp[i - j]);
}
}
System.out.println(dp[n]);
}
}
꾸준히 하자..
'백준온라인' 카테고리의 다른 글
(JAVA) 1912번 - 연속합 (0) | 2023.09.21 |
---|---|
(JAVA) 백준온라인 10844번 - 쉬운 계단 수 (0) | 2023.09.15 |
(JAVA) 백준온라인 11052번 - 카드 구매하기 (0) | 2023.09.12 |
(JAVA) 백준온라인 9095번 - 1, 2, 3 더하기 (0) | 2023.09.11 |
(JAVA) 백준온라인 11727번 - 2xn 타일링 2 (0) | 2023.09.10 |