본문 바로가기
C#/C# : Baekjoon

[백준 - 그리디 알고리즘 ] C# : 세탁소 사장 동혁 (2720번)

by TODAYCODE 2021. 7. 23.
반응형

백준 그리디 알고리즘 세탁소 사장 동혁 문제

 

2720번: 세탁소 사장 동혁

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

www.acmicpc.net

 

문제의 핵심

1. 그리디 알고리즘을 알고 있는가?

2. 단순하게 풀기


 

 

그리디 알고리즘 2번째 문제이다.

이전 문제와 큰 차이는 없으나 이번에는 코드를 압축해서 간단하게 적어보도록 하겠다.

이 문제도 if문을 사용해서 풀 수도 있지만,

이번엔 if문을 사용하지 않겠다.

 

 

거스름돈의 단위가 25, 10, 5, 1로 총 4가지가 있다.

거스름돈의 금액이 입력되면 큰 단위부터 나눠주고 그 즉시 발생한 몫을 int형으로 선언해준다.

int quarter = money / 25;

이런식으로.

그러면 선언과 동시에 몇개인지 개수가 계산되므로 굳이 여러줄을 소비할 필요가 없다.

그 뒤에는 money %= 25; 를 적어준다.

이러면 25로 나눠서 발생한 나머지만 남게되는데 이는 쿼터를 계산하고 남은 금액을 의미하게 된다.

이러한 과정을 계속 반복해주면 된다.

 

이전 문제와는 다르게 if문을 사용하지않고

굉장히 짧고 빠르게 코딩이 끝났다.

 

 

 

정답 코드

using System;

class Program
{
    static void Main(string[] args)
    {
    	// 테스트케이스 입력 받음
        int t = int.Parse(Console.ReadLine());

        for (int i = 0; i < t; i++)
        {
        	// 거슬러주어야할 금액 입력 받음
            int money = int.Parse(Console.ReadLine());
            
            // 25단위 거스름돈 개수 구함
            int quarter = money / 25;
            // 25로 나눈 나머지를 얻어서 남은 돈을 구함.
            money %= 25;
            // 이전 과정들 반복.
            int dime = money / 10;
            money %= 10;
            int nickel = money / 5;
            money %= 5;
            int penny = money;

            Console.WriteLine("{0} {1} {2} {3}", quarter, dime, nickel, penny);
        }
    }
}
반응형

댓글