최대점수 구하기 (냅색 알고리즘)

 

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