백준 14728 java

magicdrill·2024년 11월 1일

백준 문제풀이

목록 보기
478/673

백준 14728 java

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

public class bj14728 {
    static Scanner scanner = new Scanner(System.in);
    static int [][] testData;
    static int T;

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

        scanner.close();
    }

    public static void inputData(){
        System.out.println("\ninputData()");
        int i;
        int N;
        int K, S;

        N = scanner.nextInt();
        T = scanner.nextInt();
        testData = new int[N + 1][2];
        for(i = 1; i <= N; i++)
        {
            K = scanner.nextInt();
            S = scanner.nextInt();
            testData[i][0] = K;
            testData[i][1] = S;
        }
    }

    public static int findAnswer()
    {
        System.out.println("\nfindAnswer()");
        int answer = 0;
        int N = testData.length - 1;
        int i, j;
        int dp[][] = new int[N + 1][T + 1];
        Arrays.fill(dp[0], 0);

        for(i = 1; i <= N; i++)
        {
            for(j = 1; j <= T; j++)
            {
                if(testData[i][0] <= j)
                {
                    dp[i][j] = Math.max(dp[i - 1][j], dp[i-1][j - testData[i][0]] + testData[i][1]);
                }
                else
                {
                    dp[i][j] = dp[i - 1][j];
                }
                System.out.print(dp[i][j] + " ");
            }
            System.out.println();
        }
        answer = dp[N][T];

        return answer;
    }
}

0개의 댓글