가장 적은 수의 동전으로 교환

 

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

+ Recent posts