Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 정렬
- 완전탐색
- Algorithm
- 탐욕법
- mysql
- EC2
- 알고리즘
- 동적프로그래밍
- 토이프로젝트
- 리액트
- sort
- 라우터
- Router
- spring
- url parsing
- react
- 백준알고리즘
- 스터디
- Spring Boot
- BFS
- AWS
- 브루트포스
- 다익스트라 알고리즘
- 백준
- nodejs
- 서버구축
- 자료구조
- ELB
- java
- EventListener
Archives
- Today
- Total
공부하는 블로그
Baekjoon | Q.11047 - 동전 0 본문
동전들의 가치와 총 가치 K가 주어진다. 이 때 총 가치 K에 딱 맞도록 하는 동전의 최소 개수를 찾는 문제이다. 쉽게 말해 거스름돈 문제라고 생각하면 된다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
int[] coin = new int[n];
for (int i = 0; i < n; i++) {
coin[i] = sc.nextInt();
}
sc.close();
int count = 0;
for (int i = n-1; i >= 0; i--) {
if(k == 0) break;
if(k >= coin[i]) {
count += k / coin[i];
k = k % coin[i];
}
}
System.out.println(count);
}
}
동전의 최소 개수를 찾으려면 가장 큰 가치의 동전을 이용하여 총 가치 K를 채워나가면 된다. 문제를 보면 동전 종류별 가치를 오름차순으로 입력된다는 조건이 있으므로 coin[i]에는 동전의 가치가 오름차순으로 정렬되어 있다. 따라서 가장 마지막 coin[n-1]부터 차례로 index를 감소시키면서 탐색하면 된다.
k가 현재 동전의 가치(coin[i])보다 크거나 같다면 동전의 개수를 저장하는 변수인 count에 k를 coin[i]로 나눈 몫을 더해준다. 그리고 k는 나머지값으로 갱신해준다.
위 과정을 k가 0이 될 때 까지 반복하면 동전의 최소 개수를 구할 수 있다.
'알고리즘 공부' 카테고리의 다른 글
Baekjoon | Q.2231 - 분해합 (0) | 2020.06.16 |
---|---|
Algorithm | Brute Force & Backtracking (0) | 2020.06.16 |
Baekjoon | Q. 1912 - 연속합 (0) | 2020.06.16 |
Algorithm | Binary Search (0) | 2020.06.12 |
Baekjoon | Q.11054 - 가장 긴 바이토닉 부분 수열 (0) | 2020.06.11 |
Comments