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

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

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

[JAVA/μ½”λ”©ν…ŒμŠ€νŠΈ] λ™μ „κ΅ν™˜

μš”μΌμ΄ 2022. 1. 30. 22:21
λ°˜μ‘ν˜•

μ„€λͺ…

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

각 λ‹¨μœ„μ˜ 동전은 λ¬΄ν•œμ • μ“Έ 수 μžˆλ‹€.

 

μž…λ ₯

첫 번째 μ€„μ—λŠ” λ™μ „μ˜ μ’…λ₯˜κ°œμˆ˜ N(1<=N<=12)이 주어진닀. 두 번째 μ€„μ—λŠ” 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;
    static int m;
    static int answer = Integer.MAX_VALUE;
    static ArrayList<Integer> arrayList = new ArrayList<>();

    public void DFS(int L, int sum){

        if(m < sum){
            return;
        }

        if(answer <= L){
            return;
        }

        if(sum == m){
           answer = Math.min(answer, L);
        }else{
                for(int i=0; i< arrayList.size(); i++){
                    DFS(L+1, sum + arrayList.get(i));
                }
        }
    }

    public static void main(String[] args) {

        Main main = new Main();
        Scanner kb = new Scanner(System.in);

        n = kb.nextInt();

        for(int i=0; i<n; i++){
            arrayList.add(kb.nextInt());
        }

        m = kb.nextInt();

        Collections.sort(arrayList, Collections.reverseOrder());

        main.DFS(0, 0);
        System.out.println(answer);

    }

}

 

 
Comments