가장 적은 수의 동전으로 교환
3
1 2 5
15
Integer배열을 내림차순으로 정렬하고 싶다면
=> Arrays.sort(arr, Collections.reverseOrder());
L이 answer보다 크다면 return
sum>m 보다 커도 return
import java.util.*;
class Main {
static int n, m;
static Integer[] arr;
static int answer=Integer.MAX_VALUE;
public void DFS(int L, int sum) {
if(L>answer) {
return;
}
if(sum>m) {
return;
}
if(sum==m) {
answer=Math.min(answer, L);
}else {
for(int i=0; i<n; i++) {
DFS(L+1, sum+arr[i]);
}
}
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
n=kb.nextInt();
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);
System.out.println(answer);
}
}'알고리즘기초 > DFS,BFS활용' 카테고리의 다른 글
| 07. 조합의 경우수(메모이제이션) (0) | 2022.09.29 |
|---|---|
| 06. 순열 (0) | 2022.09.29 |
| 04. 중복순열 (0) | 2022.09.29 |
| 03. 최대점수 구하기(DFS) (1) | 2022.09.28 |
| 02. 바둑이 승차(DFS) (0) | 2022.09.28 |