백준/C++

[백준] 2720번: 세탁소 사장 동혁 | C++ 풀이

성실한 당근농부 2023. 5. 31. 08:31

# 문제

거스름돈의 액수가 주어지면 리암이 줘야할 쿼터(Quarter, $0.25)의 개수, 다임(Dime, $0.10)의 개수, 니켈(Nickel, $0.05)의 개수, 페니(Penny, $0.01)의 개수를 구하는 프로그램을 작성하시오. 

 


 

# 풀이

참나 디아블로? 에펙하느라 코딩할 시간이 없는 거면 대신 해줄게 이자식아

어렵지 않은 문제다. 바로 정답 소스코드를 확인해보자.

 

#include <iostream>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);	// 두 표준 입출력 동기화 해제
    cin.tie(NULL);	// 입력과 출력 묶음을 풀기

    int t, c;
    int coin[4] = {25, 10, 5, 1};
    cin >> t;

    while(t--){
        cin >> c;
        for(int i=0; i<4; i++){
            cout << c/coin[i] << ' ';
            c %= coin[i];
        }
        cout << '\n';
    }
    
    return 0;
}

 

거슬러주어야 하는 쿼터·다임·니켈·페니는 $ 단위로 되어 있고, 입력되는 거스름돈의 단위는 센트기 때문에 단위를 맞춰주어야 한다.

이번 문제 풀이에서는 정수단위의 숫자만 사용하기 위해 거슬러주어야 하는 값들을 센트로 바꾸어 coin배열에 담아주었다.

 

 

 

while(t--){
    cin >> c;
    for(int i=0; i<4; i++){
        cout << c/coin[i] << ' ';
        c %= coin[i];
    }
    cout << '\n';
}

테스트 케이스를 별로 거스름돈을 입력받고, 손님이 받는 동전의 개수가 최소가 되길 바라므로 단위가 큰 쿼터부터 연산을 실행해주면 된다.

예제 입력 1의 경우, i가 0일 때 처음 출력되는 값은 124/25인 4이다.

4쿼터를 손님에게 주어야 하므로 4쿼터를 제외한, 즉 쿼터로 나머지 연산을 수행해준 값을 새로운 c로 하고 가장 작은 단위인 페니까지 계산을 반복하면 된다.

아주 쉽게 끝!

 

 

 

 

 


 

 

 

 

2720번: 세탁소 사장 동혁

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

www.acmicpc.net

 

728x90