와챠의 우당탕탕 개발 기록장
[백준]그리디 알고리즘/동전0/11047 풀이 JAVA 본문
반응형
문제
준규가 가지고 있는 동전은 총 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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.*; | |
import java.util.StringTokenizer; | |
public class Main { | |
public static void main(String[] args) throws IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
// N, K 입력 | |
StringTokenizer st = new StringTokenizer(br.readLine()); | |
int N = Integer.parseInt(st.nextToken()); // 동전 갯수 | |
int K = Integer.parseInt(st.nextToken()); // 원하는 합 | |
// 동전 가치를 담은 배열 | |
int[] coin = new int[N]; | |
// 동전 입력 | |
for (int i = 0; i < N; i++) | |
coin[i] = Integer.parseInt(br.readLine()); | |
// K원을 만들기 위한 동전 갯수의 최솟값 구하기 | |
int count = 0; | |
for (int i = N - 1; i >= 0; i--) { | |
count += K / coin[i]; | |
K %= coin[i]; | |
} | |
// 출력 | |
System.out.println(count); | |
} | |
} |

반응형
'코딩 일기장 > CodingTest' 카테고리의 다른 글
[백준]그리디 알고리즘/ATM/11399 풀이 JAVA (0) | 2021.02.14 |
---|---|
[백준]그리디 알고리즘/회의실 배정/1931 풀이 JAVA (0) | 2021.02.14 |
[백준]동적 계획법1/평범한 배낭/12865 풀이 JAVA (0) | 2021.02.12 |
[백준]동적 계획법1/연속합/1912 풀이 JAVA (0) | 2021.02.10 |
[백준]동적 계획법1/LCS/9251 풀이 JAVA (0) | 2021.02.08 |