Computer Science/C++

백준 C++ | #17 BOJ5585 거스름돈 C++ 문제 풀이

토마토. 2022. 8. 16. 16:09

5585번: 거스름돈 (acmicpc.net)

 

5585번: 거스름돈

타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사

www.acmicpc.net

 

#include <iostream>
using namespace std;

int main() {
	int money;
	cin>>money;
	int remain=1000-money;
	int count=0;
	count=remain/500+(remain%500)/100+(remain%100)/50+(remain%50)/10+(remain%10)/5+(remain%5)/1;
	cout<<count;
}

이렇게 500부터 하나씩 그 당시의 최선으로 적으면 그게 그리디 알고리즘인가보다. 

 

#include <iostream>

int main() {
	int left;
	std::cin >> left;
	left = 1000 - left;

	int count = 0, tmp=0;
	tmp = left / 500;
	count += tmp;
	left -= 500 * tmp;

	tmp = left / 100;
	count += tmp;
	left -= 100 * tmp;

	tmp = left / 50;
	count += tmp;
	left -= 50 * tmp;

	tmp = left / 10;
	count += tmp;
	left -= 10 * tmp;

	tmp = left / 5;
	count += tmp;
	left -= 5 * tmp;

	tmp = left;
	count += tmp;
	left -=tmp;

	std::cout << count << std::endl;

	return 0;
}