[백준] 12865 평범한 배낭 - Java
dp[N+1][K+1]
행을 증가시키면서 값을 누적시켜 최적 무게를 계산한다.
dp의 열 값은 해당 무게만큼 물건을 넣었을 때 가치의 최댓값이다.
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));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
Bag[] arr = new Bag[N + 1];
for(int i=1; i<N+1; i++){
st = new StringTokenizer(br.readLine());
arr[i] = new Bag(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
int[][] dp = new int[N + 1][K + 1];
for(int i=1; i<N+1; i++){
for(int j=1; j<K+1; j++){
if(arr[i].weight > j){
dp[i][j] = dp[i-1][j];
}else{
dp[i][j] = Math.max(dp[i-1][j], dp[i-1][j - arr[i].weight] + arr[i].value);
}
}
}
System.out.println(dp[N][K]);
for(int i=1; i<N+1; i++){
for(int j=1; j<K+1; j++){
System.out.print(dp[i][j] + " ");
}
System.out.println();
}
}
}
class Bag{
int weight, value;
Bag(int weight, int value){
this.weight = weight;
this.value = value;
}
}
dp 배열 디자인 / 점화식 찾기 공부하기..
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1766 문제집 - Java (0) | 2022.07.28 |
---|---|
[백준] 9251 LCS - Java (0) | 2022.07.27 |
[백준] 2193 이친수 - Java (0) | 2022.07.26 |
[백준] 1786 찾기 - Java (0) | 2022.07.19 |
[백준] 13460 구슬 탈출 3 - Java (0) | 2022.07.15 |
댓글
이 글 공유하기
다른 글
-
[백준] 1766 문제집 - Java
[백준] 1766 문제집 - Java
2022.07.28 -
[백준] 9251 LCS - Java
[백준] 9251 LCS - Java
2022.07.27 -
[백준] 2193 이친수 - Java
[백준] 2193 이친수 - Java
2022.07.26 -
[백준] 1786 찾기 - Java
[백준] 1786 찾기 - Java
2022.07.19