https://www.acmicpc.net/problem/7579
import java.util.*;
import java.io.*;
/**
* 1. 앱 메모리와 비용(n개)과 구해야할 메모리(m)가 주어짐.
*
* 2. dp[앱][최소비용] = 최대메모리
*
* 3. 2중 포문으로 돌면서 m이상 중 최소비용 저장해두기
*
*/
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 m = Integer.parseInt(st.nextToken());
int[] memory = new int[n];
int[] cost = new int[n];
int result = 10_000;
st = new StringTokenizer(br.readLine());
for(int i = 0; i < n; i++){
memory[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
for(int i = 0; i < n; i++){
cost[i] = Integer.parseInt(st.nextToken());
}
int[][] dp = new int[n][10_001];
for(int i = 0; i < n; i++){
int curM = memory[i];
int curC = cost[i];
for(int j = 0; j <= 10_000; j++){
if(i == 0){ // 첫번째 앱일때 비용체크
if(j >= curC){
dp[i][j] = curM;
}
}else{
dp[i][j] = dp[i-1][j];
if(j >= curC){
dp[i][j] = Math.max(dp[i][j],dp[i-1][j-curC]+curM);
}
}
if(dp[i][j] >= m){
result = Math.min(j,result);
}
}
}
System.out.println(result);
}
}
'Algorithm > 백준풀이' 카테고리의 다른 글
[알고리즘 문제풀이] 백준 14500 테트로미노(JAVA코드) (0) | 2022.04.05 |
---|---|
[알고리즘 문제풀이] 백준 2293 동전 1(JAVA코드) (0) | 2022.04.04 |
[알고리즘 문제풀이] 백준 21611 마법사 상어와 블리자드(JAVA코드) (0) | 2022.04.01 |
[알고리즘 문제풀이] 백준 21610 마법사 상어와 비바라기(JAVA코드) (0) | 2022.03.31 |
[알고리즘 문제풀이] 백준 17144 미세먼지 안녕!(JAVA코드) (0) | 2022.03.24 |
댓글