https://www.acmicpc.net/problem/12865
최대 무게가 10만이므로, 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());
int[][] arr = new int[N+1][2];
int[][] dp = new int[N+1][K+1];
dp[0][0] = 0;
for(int i=0;i<N;i++){
st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken()); //weight
arr[i][1] = Integer.parseInt(st.nextToken()); //value
}
for(int i=1;i<N+1;i++){
int weight = arr[i-1][0];
int value = arr[i-1][1];
for(int j=1;j<K+1;j++){
dp[i][j] = dp[i-1][j];
if(j - weight < 0) continue;
dp[i][j] = Math.max(dp[i-1][j], dp[i-1][j-weight]+value);
}
}
System.out.println(dp[N][K]);
}
}