import java.util.Scanner;
public class Main06 {
//냅색 알고리즘
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int m = kb.nextInt();
int[] dynamic = new int[m+1];
for(int i=0; i<n; i++) {
int score = kb.nextInt();
int time = kb.nextInt();
for(int j=m; j>=time; j--) {
//앞에서부터 돌면 중복
//뒤에서부터 돌아야 중복 회피
dynamic[j] = Math.max(dynamic[j], dynamic[j-time]+score);
}
}
System.out.println(dynamic[m]);
}
}
'[Solved] > 코딩테스트' 카테고리의 다른 글
동전교환 (냅색 알고리즘) (0) | 2023.04.06 |
---|---|
뮤직비디오(결정알고리즘) (0) | 2023.04.03 |
섬나라 아일랜드 (BFS, DFS) (0) | 2023.03.30 |
토마토(BFS 활용) (0) | 2023.03.29 |
후위연산식 문제 (Stack) (0) | 2023.03.18 |