๐ŸŒท๐ŸŒผ๋ชจ์—ฌ๋ด์š” ๊ฐœ๋ฐœ์˜์ˆฒ๐ŸŒท๐ŸŒผ

[JAVA/์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ์ตœ๋Œ€์ ์ˆ˜ ๊ตฌํ•˜๊ธฐ(๋ƒ…์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜) ๋ณธ๋ฌธ

๊ฐœ๋ฐœ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด JAVA

[JAVA/์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ์ตœ๋Œ€์ ์ˆ˜ ๊ตฌํ•˜๊ธฐ(๋ƒ…์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜)

์š”์ผ์ด 2022. 7. 16. 15:37
๋ฐ˜์‘ํ˜•

์„ค๋ช…

์ด๋ฒˆ ์ •๋ณด์˜ฌ๋ฆผํ”ผ์•„๋“œ๋Œ€ํšŒ์—์„œ ์ข‹์€ ์„ฑ์ ์„ ๋‚ด๊ธฐ ์œ„ํ•˜์—ฌ ํ˜„์ˆ˜๋Š” ์„ ์ƒ๋‹˜์ด ์ฃผ์‹  N๊ฐœ์˜ ๋ฌธ์ œ๋ฅผ ํ’€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ๋ฌธ์ œ๋Š” ๊ทธ๊ฒƒ์„ ํ’€์—ˆ์„ ๋•Œ ์–ป๋Š” ์ ์ˆ˜์™€ ํ‘ธ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์ฃผ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ œํ•œ์‹œ๊ฐ„ M์•ˆ์— N๊ฐœ์˜ ๋ฌธ์ œ ์ค‘ ์ตœ๋Œ€์ ์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

(ํ•ด๋‹น๋ฌธ์ œ๋Š” ํ•ด๋‹น์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉด ํ‘ธ๋Š” ๊ฑธ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค, ํ•œ ์œ ํ˜•๋‹น ํ•œ๊ฐœ๋งŒ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)


์ž…๋ ฅ
์ฒซ ๋ฒˆ์งธ ์ค„์— ๋ฌธ์ œ์˜ ๊ฐœ์ˆ˜N(1<=N<=50)๊ณผ ์ œํ•œ ์‹œ๊ฐ„ M(10<=M<=300)์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ N์ค„์— ๊ฑธ์ณ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ์„ ๋•Œ์˜ ์ ์ˆ˜์™€ ํ‘ธ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.


์ถœ๋ ฅ
์ฒซ ๋ฒˆ์งธ ์ค„์— ์ œํ•œ ์‹œ๊ฐ„์•ˆ์— ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.


์˜ˆ์‹œ ์ž…๋ ฅ 1 

5 20
10 5
25 12
15 8
6 3
7 4


์˜ˆ์‹œ ์ถœ๋ ฅ 1

41

import java.util.*;

public class Main {

    /*static int n, m;
    static int[] dy;

    public int solution(int[] coin){

        Arrays.fill(dy, Integer.MAX_VALUE);

        dy[0] = 0;

        for(int i=0; i<n; i++){
            for(int j=coin[i]; j<=m; j++){
                dy[j] = Math.min(dy[j], dy[j-coin[i]]+1);
            }
        }
        return dy[m];
    }*/


    public static void main(String[] args) {

        Main main = new Main();

        Scanner in = new Scanner(System.in);

        int n = in.nextInt();
        int m = in.nextInt();
        int[] dy = new int[m+1];
        for(int i=0; i<n; i++){
            int ps = in.nextInt();
            int pt = in.nextInt();
            for(int j=m; j>=pt; j--){
                dy[j] = Math.max(dy[j], dy[j-pt]+ps);
            }
        }

        System.out.println(dy[m]);
    }
}
Comments