다음과 같이 여러 단위의 동전들이 주어져 있을 때 거스름돈을 가장 적은 수의 동전으로 해주려면 어떻게 주면 되는가? 각 단위의 동전은 무한정 쓸 수 있다.
입력설명
출력설명
첫 번째 줄에 거슬러 줄 동전의 최소 개수를 출력한다.
입력예제
3
1 2 5
15
15
출력예제
3
package dfs_bfs;
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class Main10 {
static int n,m, answer = Integer.MAX_VALUE;
public void DFS(int L, int sum , Integer[] arr){
if(sum> m)
return;
if(L >= answer)
return;
if(sum == m){
// L은 동전의 개수
answer = Math.min(answer, L);
}
else{
for(int i=0;i<n;i++){
DFS(L+1, sum+arr[i],arr);
}
}
}
public static void main(String[] args) {
Main10 T = new Main10();
Scanner kb = new Scanner(System.in);
n = kb.nextInt();
Integer[] arr = new Integer[n];
for(int i=0;i<n;i++)
arr[i] = kb.nextInt();
Arrays.sort(arr, Collections.reverseOrder());
m = kb.nextInt();
T.DFS(0,0,arr);
System.out.println(answer);
}
}