# 문제
거스름돈의 액수가 주어지면 리암이 줘야할 쿼터(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로 하고 가장 작은 단위인 페니까지 계산을 반복하면 된다.
아주 쉽게 끝!
728x90
'백준 > C++' 카테고리의 다른 글
[백준] 2292번: 벌집 | C++ 풀이 (0) | 2023.06.02 |
---|---|
[백준] 2903번: 중앙 이동 알고리즘 | C++ 풀이 (0) | 2023.06.01 |
[백준] 11005번: 진법 변환 2 | C++ 풀이 (0) | 2023.05.30 |
[백준] 2745번: 진법 변환 | C++ 풀이 (0) | 2023.05.29 |
[백준] 2563번: 색종이 | C++ 풀이 (2) | 2023.05.28 |