동전의 개수를 최소로 하는 방법은 가치가 큰 동전을 최대한 많이 사용하는 것이다.
1. 동전의 가치를 입력받고 ArrayList에 저장함
2. ArrayList를 동전의 가치가 큰 순서대로 정렬함
3. K가 0이 될 때까지 동전의 가치가 큰 것부터 거슬러주고 그 동전의 개수를 카운트함
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
ArrayList<Integer> list = new ArrayList<>();
for(int i=0;i<N;i++) {
list.add(Integer.parseInt(br.readLine()));
}
list.sort((o1, o2)->{
return o2-o1;
});
int cnt = 0;
int idx = 0;
while(K!=0) {
if(list.get(idx)>K) {
idx++;
continue;
}
cnt += K/list.get(idx); // 동전의 개수 추가
K %= list.get(idx); // 거슬러주고 남은 돈으로 업데이트
}
System.out.println(cnt);
}
}
'[BOJ] - JAVA' 카테고리의 다른 글
[백준] 1783 : 병든 나이트 JAVA 풀이 (0) | 2022.10.30 |
---|---|
[백준] 2875 : 대회 or 인턴 JAVA 풀이 (0) | 2022.10.30 |
[백준] 11399 : ATM JAVA 풀이 (0) | 2022.10.28 |
[백준] 1707 : 이분 그래프 JAVA 풀이 (0) | 2022.10.28 |
[백준] 9466 : 팀 프로젝트 JAVA 풀이 (0) | 2022.10.25 |