평범한 배낭 12865

LJM·2023년 3월 21일
0

백준풀기

목록 보기
149/259

https://www.acmicpc.net/problem/12865

풀이를 봐도 명확하게 이해가 되지 않는다

그나마 도움이 되었던 사이트
https://www.geeksforgeeks.org/0-1-knapsack-problem-dp-10/

참고하면서 겨우 풀 수 있었다

import java.io.*;
public class Main
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] input = br.readLine().split(" ");

        int N = Integer.parseInt(input[0]);
        int K = Integer.parseInt(input[1]);

        int[] w = new int[N+1];
        int[] p = new int[N+1];

        for (int i = 1; i < N+1; i++)
        {
            input = br.readLine().split(" ");
            w[i] = Integer.parseInt(input[0]);
            p[i] = Integer.parseInt(input[1]);
        }

        int[][] dp = new int[N+1][K+1];//가치들 담을 dp

        for (int i = 1; i < N + 1; i++) //행은 물건 인덱스
        {
            for (int j = 1; j < K + 1; j++) //열은 허용 용량
            {
                if(j >= w[i])
                {
                    dp[i][j] = Math.max(dp[i-1][j], dp[i-1][j-w[i]] + p[i]);
                }
                else
                    dp[i][j] = dp[i-1][j];
            }
        }

        System.out.println(dp[N][K]);
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글