[c/c++] 백준 5585 (Bronze 2)

은동·2023년 2월 4일
0

Baekjoon

목록 보기
18/49

🔨 문제

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

JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있다. 1000엔 지폐를 내고 거스름돈을 가장 적게 받으면 잔돈의 개수가 어떻게 되는지 구하는 문제!

내야 하는 금액을 입력한 후, 최소한의 거스름돈의 개수 출력하는 코드를 작성

🔨 해결방법

우리가 구해야 할 것은 잔돈이므로 돌려받을 금액을 기준으로 조건식을 완성해야 함


🔨 코드

#include <iostream>
using namespace std;

int main() {
	cin.tie(NULL);
	cout.tie(NULL);
	ios::sync_with_stdio(false);

	int pay;
	cin >> pay;
	int return_pay = 1000 - pay;
	int cnt = 0;

	while (1) {
		if (return_pay >= 500) {
			return_pay -= 500;
			cnt++;
		}
		if (return_pay < 500 && return_pay >= 100) {
			cnt += (return_pay / 100);
			return_pay %= 100;			
		}
		if (return_pay < 100 && return_pay >= 50) {
			cnt += (return_pay / 50);
			return_pay %= 50;
		}
		if (return_pay < 50 && return_pay >= 10) {
			cnt += (return_pay / 10);
			return_pay %= 10;
		}
		if (return_pay < 10 && return_pay >= 5) {
			cnt += (return_pay / 5);
			return_pay %= 5;
		}
		if (return_pay < 10 && return_pay >= 1) {
			cnt += return_pay;
			return_pay = 0;
		}
		if (return_pay == 0) break;
	}
	cout << cnt;

	return 0;
}
profile
자자 선수입장~

0개의 댓글