문제의 핵심은 예제 입력에 있는 거스름돈을 받으면 25, 10, 5, 1로 쪼개서 동전을 최대한 덜 주는 방법을 찾아 주면 끝인데, 거스름돈 받기 전에 들어오는 최초 값은 몇번 호출할 것인지를 말한다, 그리고 설명에 있는 입력과 출력을 보면 설명이 명확하지 않아 입력을 모두 받은 후에 출력시켜야 하는 건지 헷갈릴 수 있는데, 거스름돈을 받기 시작한 시점부터 바로 출력시켜도 문제 진행에는 이상이 없다.
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
while(count-->0) {
int m = Integer.parseInt(br.readLine());
int[] vendor = new int[4];
// Quarter
vendor[0] = m / 25;
m = m % 25;
// Dime
vendor[1] = m / 10;
m = m % 10;
// Nickel
vendor[2] = m / 5;
m = m % 5;
// Penny
vendor[3] = m;
// return
System.out.println(vendor[0] + " " + vendor[1] + " " + vendor[2] + " " + vendor[3]);
}
}
}
풀이방법은 최대한 덜 주는 방법을 찾아야 하기 때문에 단순하게 접근해서 단위가 큰 동전 순으로 나눠주면 바로 최소 동전 갯수를 구할 수 있고 이후 예제 출력에 맞는 방식으로 출력해주면 끝이다.
문제 난이도는 낮지만 오히려 입력 받는 방식에서 어떻게 하라는 거지 싶었는데 BufferedReader를 사용해서 값을 받아준 후 처음 들어온 값만큼만 돌려주면 깔끔하게 끝낼 수 있다.
Leave a Reply