본문 바로가기

알고리즘 문제

[C/C++ 백준 5585번] 거스름돈 (Bronze 2)

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

 

5585번: 거스름돈

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

www.acmicpc.net

처음에 쓴 코드

#include <cstdio>
int main(void){
	int Money, M500,M100,M50,M10,M5,M1;
	scanf("%d",&Money);
	Money = 1000-Money;
	M500 = Money/500;
	Money -= M500 * 500;
	M100 = Money/100;
	Money -= M100 * 100;
	M50 = Money/50;
	Money -= M50 * 50;
	M10 = Money/10;
	Money -= M10 * 10;
	M5 = Money/5;
	Money -= M5 * 5;
	M1 = Money;
	printf("%d",M500+M100+M50+M10+M5+M1);
}

 그 다음 쓴 코드.

 

#include <cstdio>
int main(void){
	int ans=0, cnt, Money, charge[6]={500,100,50,10,5,1};
	scanf("%d",&Money);
	Money = 1000 - Money;
	for(int i=0; i<6; i++){
		cnt = Money/charge[i];
		Money -= cnt*charge[i];
		ans += cnt;
	}
	printf("%d",ans);
}