1. 문제 링크
2. 문제 및 입출력예제
3. 문제 풀이
전형적인 DP 문제이다.
해당 무게가 되는지 여부를 알고 지금 물건의 가치가 더 높은지 판단해서 저장한다.
4. 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] split = br.readLine().split(" ");
int N = Integer.parseInt(split[0]); //물건 개수
int W = Integer.parseInt(split[1]); //가방 최대 무게
int[] weight = new int[N+1];
int[] value = new int[N+1];
for(int i=0;i<N;i++) {
split = br.readLine().split(" ");
weight[i+1] = Integer.parseInt(split[0]);
value[i+1] = Integer.parseInt(split[1]);
}
int[][] D = new int[N+1][W+1];
for(int i=1;i<N+1;i++) { //물건
for(int w=1;w<W+1;w++) { //가방 무게
//해당 물건의 무게가 w를 초과하는지
if(weight[i]>w) {
D[i][w] = D[i-1][w];
}
else {
D[i][w] = Math.max(D[i-1][w], value[i]+D[i-1][w-weight[i]]);
}
}
}
System.out.println(D[N][W]);
}
}
'ALGORITHM' 카테고리의 다른 글
백준 14719 빗물 (Java) (0) | 2023.04.19 |
---|---|
백준 2636, 2638 치즈 (Java) (0) | 2023.04.18 |
백준 2206 벽 부수고 이동하기 (Java) (0) | 2023.04.17 |
백준 21318 피아노 체조 (Java) (0) | 2023.04.17 |
백준 10775 공항 (Java) (0) | 2023.04.16 |