🌷🌼λͺ¨μ—¬λ΄μš” 개발의숲🌷🌼

[JAVA/μ½”λ”©ν…ŒμŠ€νŠΈ] λ™μ „κ΅ν™˜(λƒ…μƒ‰μ•Œκ³ λ¦¬μ¦˜) λ³Έλ¬Έ

개발/μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œν’€μ΄ JAVA

[JAVA/μ½”λ”©ν…ŒμŠ€νŠΈ] λ™μ „κ΅ν™˜(λƒ…μƒ‰μ•Œκ³ λ¦¬μ¦˜)

μš”μΌμ΄ 2022. 7. 13. 01:22
λ°˜μ‘ν˜•

μ„€λͺ…
λ‹€μŒκ³Ό 같이 μ—¬λŸ¬ λ‹¨μœ„μ˜ 동전듀이 μ£Όμ–΄μ Έ μžˆμ„λ•Œ κ±°μŠ€λ¦„λˆμ„ κ°€μž₯ 적은 수의 λ™μ „μœΌλ‘œ κ΅ν™˜ν•΄μ£Όλ €λ©΄ μ–΄λ–»κ²Œ μ£Όλ©΄ λ˜λŠ”κ°€?
각 λ‹¨μœ„μ˜ λ™μ „은 λ¬΄ν•œμ • μ“Έ μˆ˜ μžˆλ‹€.

μž…λ ₯
첫 번째 μ€„μ—λŠ” λ™μ „μ˜ μ’…λ₯˜κ°œμˆ˜ N(1<=N<=50)이 주어진닀.
두 번째 μ€„μ—λŠ” N개의 λ™μ „μ˜ μ’…λ₯˜κ°€ 주어지고, κ·Έ λ‹€μŒμ€„μ— 거슬러 쀄 κΈˆμ•‘ M(1<=M<=500)이 주어진닀.
각 λ™μ „μ˜ μ’…λ₯˜λŠ” 100원을 λ„˜μ§€ μ•ŠλŠ”λ‹€.

좜λ ₯
첫 λ²ˆμ§Έ μ€„에 κ±°μŠ¬λŸ¬ μ€„ λ™μ „μ˜ μ΅œμ†Œκ°œμˆ˜λ₯Ό μΆœλ ₯ν•œλ‹€.

μ˜ˆμ‹œ μž…λ ₯ 1 
3
1 2 5
15


μ˜ˆμ‹œ 좜λ ₯ 1
3


힌트
좜λ ₯μ„€λͺ… : 5 5 5 λ™μ „ 3개둜 κ±°μŠ¬λŸ¬ μ€„ μˆ˜ μžˆλ‹€.

 

 

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);

        n = in.nextInt();

        int[] arr = new int[n];

        for(int i=0; i<n; i++){
            arr[i] = in.nextInt();
        }

        m = in.nextInt();

        dy = new int[m+1];

        System.out.println(main.solution(arr));
    }
}
Comments