백준 6144 java : DP, 배낭문제

magicdrill·2024년 12월 5일
0

백준 문제풀이

목록 보기
501/654

백준 6144 java : DP, 배낭문제

import java.util.Arrays;
import java.util.Scanner;

public class bj6144 {
    static Scanner scanner = new Scanner(System.in);
    static int N, M;
    static int[] W;
    static int[] D;

    public static void main(String[] args) {
        inputData();
        System.out.println(findAnswer());

        scanner.close();
    }

    public static void inputData(){
        System.out.println("inputData()");
        int i;

        N = scanner.nextInt();
        M = scanner.nextInt();
        W = new int[N];
        D = new int[N];
        for(i = 0; i < N; i++){
            W[i] = scanner.nextInt();
            D[i] = scanner.nextInt();
        }
    }

    public static int findAnswer(){
        System.out.println("findAnswer()");
        int [] DP = new int[M + 1];
        int i, j;

        for(i = 0; i < N; i++){
            for(j = M; j >= W[i]; j--){
                if(j - W[i] >= 0){
                    DP[j] = Math.max(DP[j], DP[j - W[i]] + D[i]);
                }
            }

            for(j = 0; j <= M; j++){
                System.out.print(DP[j] + " ");
            }
            System.out.println();
        }

        return DP[M];
    }
}

0개의 댓글