반응형
동전 0 성공
시간 제한메모리 제한제출정답맞은 사람정답 비율
1 초 | 256 MB | 18542 | 10193 | 8307 | 55.562% |
문제
준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.
동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)
둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)
출력
첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다.
Java solution
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)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer tokenizer = new StringTokenizer(br.readLine()); int n = Integer.parseInt(tokenizer.nextToken()); int k = Integer.parseInt(tokenizer.nextToken()); int[] coins = new int[n]; for(int i = 0; i < n; i++) { coins[i] = Integer.parseInt(br.readLine()); } int count = 0; for(int i = n-1; i >= 0; i--) { if(k >= coins[i]) { count += k / coins[i]; k %= coins[i]; } } bw.write(String.valueOf(count)); br.close(); bw.close(); } }
이 문제는 특수한 조건 덕분에 DP보다 그리디 알고리즘으로 푸는 것이 더 빠르다.
반응형
'Algorithm' 카테고리의 다른 글
[백준 2217번] 로프 - Java (0) | 2019.09.21 |
---|---|
[백준 11399번] ATM - Java (0) | 2019.09.21 |
[백준 2156번] 포도주 시식 - Java (0) | 2019.09.19 |
[백준 11054번] 가장 긴 바이토닉 부분 수열 - Java (0) | 2019.09.19 |
[백준 11053번] 가장 긴 증가하는 수열 - Java (0) | 2019.09.18 |