본문 바로가기
백준

[백준] 2720번 : 세탁소 사장 동혁 – JAVA [자바]

by Hongwoo 2022. 11. 17.
반응형

https://www.acmicpc.net/problem/2720

 

2720번: 세탁소 사장 동혁

각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다.

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 2720번 세탁소 사장 동혁은 브론즈 3 난이도의 수학 및 그리디 문제이다. 이 문제에서는 거스름돈의 액수가 주어진다. 이때, 줘야 할 쿼터의 개수, 다임의 개수, 니켈의 개수와 페니의 개수를 구하면 된다.

 

이 문제에서는 거스름돈으로 주는 동전의 개수를 최소화해야 한다고 나온다. 따라서, 가장 큰 쿼터부터 가장 많이 주고, 그다음의 다임을 가장 많이 주는 식으로 한다.

 

예시를 한번 보겠다.

 

예시로 124, 즉 1.24$가 주어졌다. 우선, 쿼터 (0.25$) 는 총 4개를 줄 수 있다. 이러면 0.24$가 남는다. 

0.24$에서는 다임 (0.10$) 을 2개 줄 수 있고 이러면 0.04$가 남는다. 

0.04$ 중에서 니켈 (0.05$) 로 거스름돈을 줄 수 없으니 페니 4개를 준다. 

 

따라서, 4 2 0 4가 된다.

 

자세한 코드는 밑에 있는 코드를 참고하면 되겠다.

 


  • 코드

 

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));
        int t = Integer.parseInt(br.readLine());  //테스트 케이스 개수
        int quarter = 25;  //쿼터 0.25$
        int dime = 10;  //다임 0.10$
        int nickel = 5;  //니켈 0.05$
        int penny = 1;  //페니 0.01$
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < t; i++) {
            int c = Integer.parseInt(br.readLine());
            sb.append(c / quarter + " ");
            c %= quarter;
            sb.append(c / dime + " ");
            c %= dime;
            sb.append(c / nickel + " ");
            c %= nickel;
            sb.append(c / penny + "\n");
        }
        System.out.print(sb);
    }
}

 

 

반응형

댓글