자동판매기 잔돈계산 (파이썬, C++ 예제)
이전 게시물 중 자동판매기를 구현한 2가지 코드가 있었습니다.
자판기 코드의 완성도를 높이기 위해 잔돈 반환 기능을 넣어본다면 어떨까요?
자판기 코드의 완성도를 높이기 위해 잔돈 반환 기능을 넣어본다면 어떨까요?
그냥 남은 잔액만 표시(잔액 : 1234원)되는 것이 아닌, 500원, 100원, 50원, 10원,
1원 동전으로 말이죠.
물론 동전은 가능하면 큰 단위로 나오는 것이 편리합니다.
예) 잔액이 1234원인 경우 아래 그림처럼 나오도록 할 수 없을까요?
심화반 수업중에 이런 질문을 하신 분이 있어 만들어 보았습니다.
먼저 어떻게 만들어야 할지 생각해 보겠습니다.
- 잔액 확인 (입력을 통해 처리)
- 단위가 큰 동전부터 처리해야 함
- 잔액(예 1234원)을 큰 동전부터 나누어 몫과 나머지를 이용
- 1234 / 500원 = 몫(2), 나머지 (234)
- 234 / 100원 = 몫(2), 나머지 (34)
- 34 / 50원 = 몫 (0), 나머지 (34)
- 34 / 10원 = 몫 (3), 나머지 (4)
- 4 / 1원 = 몫 (4), 나머지 (0)
- 결과 : 500원 2개, 100원 2개, 50원 0개, 10원 3개, 1원 4개
먼저 C++ 로 만든 잔돈 반환 코드입니다.
#include <iostream> using namespace std; int main() { int x; cout << "거스름돈 입력 : "; cin >> x; if (x <= 0) { cout << "거스름돈 없음" << endl; return 0; } int y500 = 0, y100 = 0, y50 = 0, y10 = 0, y1 = 0; y500 = x / 500; x = x % 500; y100 = x / 100; x %= 100; y50 = x / 50; x %= 50; y10 = x / 10; x %= 10; y1 = x; cout << "500원\t: " << y500 << "개" << endl; cout << "100원\t: " << y100 << "개" << endl; cout << "50원\t: " << y50 << "개" << endl; cout << "10원\t: " << y10 << "개" << endl; cout << "1원\t: " << y1 << "개" << endl; }
다음은 파이썬으로 만든 잔돈 반환 코드입니다.
x = int( input('거스름돈 입력 : ') ) if x <= 0: print('거스름돈 없음') import sys sys.exit() y500 = x//500; x %= 500 y100 = x//100; x %= 100 y50 = x//50; x %= 50 y10 = x//10; x %= 10 y1 = x print('500원\t:', y500, '개') print('100원\t:', y100, '개') print('50원\t:', y50, '개') print('10원\t:', y10, '개') print('1원\t:', y1, '개')
C++, 파이썬 둘다 결과는 동일합니다.
감사합니다.
감사합니다.
댓글
댓글 쓰기