티스토리 뷰
//알고리즘.
1. 부분집합으로 풀었던 문제를 DP테이블을 만들어 품.
2. 0/1 knapsack 처럼 정해진 칼로리에 담을 수 있는 칼로리만큼 담고 만족도를 합하여 구함.
import java.util.Scanner;
public class 햄버거다이어트_DP {
static int T,N,L;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
T = sc.nextInt();
for (int tc = 1; tc <= T; tc++) {
N = sc.nextInt();
L = sc.nextInt();
int[] arr = new int[N+1];
int[] cal = new int[N+1];
for (int i = 1; i <= N; i++) {
arr[i] = sc.nextInt();
cal[i] = sc.nextInt();
}
int[][] dp = new int[N+1][L+1];
for (int i = 1; i < dp.length; i++) {
for (int j = 0; j < dp[i].length; j++) {
if(cal[i] > j) {
dp[i][j] = dp[i-1][j];
}else {
dp[i][j] = Math.max(arr[i] + dp[i-1][j-cal[i]], dp[i-1][j]);
}
}
}
System.out.printf("#%d %d\n",tc,dp[N][L]);
}
}
}
'Algorithm' 카테고리의 다른 글
백준_일곱난쟁이_2309 (0) | 2020.10.05 |
---|---|
백준_백도어_9205 (0) | 2020.10.04 |
SW Expert Academy_카드 뒤집기 (0) | 2020.09.30 |
SW Expert Academy_벌꿀 채취 (0) | 2020.09.29 |
백준_현수막_14716 (0) | 2020.09.28 |