💡 풀이
✔️ 배낭 알고리즘
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
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[][] item = new int[n + 1][2];
for(int i = 1; i<=n; i++){
st = new StringTokenizer(br.readLine());
item[i][0] = Integer.parseInt(st.nextToken());
item[i][1] = Integer.parseInt(st.nextToken());
}
int[][] dp = new int[n+1][k+1];
for(int i = 1; i<=k; i++){
for(int j = 1; j<=n; j++){
dp[j][i] = dp[j-1][i];
if (i - item[j][0] >= 0){
dp[j][i] = Math.max(dp[j-1][i], item[j][1] + dp[j-1][i-item[j][0]]);
}
}
}
System.out.println(dp[n][k]);
}
}