다음은 C언어로 작성한 거스름 돈 알고리즘 소스 코드입니다. 거스름 돈 알고리즘은 대표적인 탐욕(Greedy) 알고리즘입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
//거스름 돈 (탐욕 알고리즘) //Program.c #include <stdio.h> typedef enum _MType MType; enum _MType { One=1, Five=5, Ten=10, Fifty=50,Hun=100, FHun=500,Thous=1000,FTh=5000, TenTh=10000, FTenTh=50000 }; void Calculate(MType money,int value) { int remain = money - value; int ftenth=0,tenth=0, fth=0, thous=0; int fhun=0,hun=0, fifty=0, ten=0, five=0, one=0; printf("가격:%d, 받은 돈:%d\n",money,value); printf("=== 거스름 돈 ===\n"); if(remain>FTenTh) { ftenth = remain/FTenTh; remain = remain % FTenTh; printf("5만원권:%d개\n",ftenth); } if(remain>TenTh) { tenth = remain/TenTh; remain = remain%TenTh; printf("만원권:%d개\n",tenth); } if(remain>FTh) { fth = remain/FTh; remain = remain%FTh; printf("5천원권:%d개\n",fth); } if(remain>Thous) { thous = remain/Thous; remain = remain%Thous; printf("천원권:%d개\n",thous); } if(remain>FHun) { fhun = remain/FHun; remain = remain%FHun; printf("오백원권:%d개\n",fhun); } if(remain>Hun) { hun = remain/Hun; remain = remain%Hun; printf("백원권:%d개\n",hun); } if(remain>Fifty) { fifty = remain/Fifty; remain = remain%Fifty; printf("오십원권:%d개\n",fifty); } if(remain>Ten) { ten = remain/Ten; remain = remain%Ten; printf("십원권:%d개\n",ten); } if(remain>Five) { five = remain/Five; remain = remain%Five; printf("오원권:%d개\n",five); } if(remain>One) { one = remain/One; remain = remain%One; printf("일원권:%d개\n",one); } } int main() { Calculate(TenTh,1352); return 0; } |
▷ 실행 결과
1 2 3 4 5 6 7 8 9 |
가격:10000, 받은 돈:1352 === 거스름돈 === 5천원권:1개 천원권:3개 오백원권:1개 백원권:1개 십원권:4개 오원권:1개 일원권:3개 |
학습에 도움이 되시면 ebook을 구입(판매가 3000원, ebook)하여 소장하시면 감사하겠습니다.