2020. 12. 16. 07:39ㆍIT/PYTHON
현명하게 거스름돈을 계산해 주는 프로그램을 만들려고 합니다. 예를 들어 33,000원짜리 물건을 사기 위해 100,000원을 냈다면,
50,000원 1장
10,000원 1장
5,000원 1장
1,000원 2장
이런 식으로 '가장 적은 수'의 지폐를 거슬러 주는 것입니다. 방금 같은 경우에는 총 5장을 거슬러 준 거죠.
우리는 calculate_change라는 함수를 작성하려고 하는데요. 이 함수는 지불한 금액을 나타내는 payment와 물건의 가격을 나타내는 cost를 파라미터로 받습니다.
아래의 코드에 이어서 깔끔하게 프로그램을 작성해 보세요.
내가 작성한 답안
def calculate_change(payment, cost):
# 코드를 작성하세요.
change = payment - cost
oman = int(change / 50000)
change = change - oman * 50000
ilman = int(change / 10000)
change = change - ilman * 10000
ochen = int(change / 5000)
change = change - ochen * 5000
ilchen = int(change / 1000)
change = change - ilchen * 1000
print(f"50000원 지폐: {oman}장")
print(f"10000원 지폐: {ilman}장")
print(f"5000원 지폐: {ochen}장")
print(f"1000원 지폐: {ilchen}장")
# 테스트
calculate_change(100000, 33000)
print()
calculate_change(500000, 378000)
모범답안
def calculate_change(payment, cost):
change = payment - cost # 거스름돈 총액
fifty_count = change // 50000 # 50,000원 지폐
ten_count = (change % 50000) // 10000 # 10,000원 지폐
five_count = (change % 10000) // 5000 # 5,000원 지폐
one_count = (change % 5000) // 1000 # 1,000원 지폐
# 답 출력
print("50000원 지폐: {}장".format(fifty_count))
print("10000원 지폐: {}장".format(ten_count))
print("5000원 지폐: {}장".format(five_count))
print("1000원 지폐: {}장".format(one_count))
# 테스트
calculate_change(100000, 33000)
모범 답안 해설
예시를 통해 아이디어를 얻어 봅시다. 33,000원 하는 물건을 사는데 100,000원을 받았다고 가정할게요.
그러면 67,000원을 거슬러 줘야 하는데, 어떻게 해야 최소 지폐 개수로 거슬러 줄 수 있을까요?
머리를 좀 굴려 보면 알 수 있는데요. 가장 큰 지폐부터 넣어 보면 됩니다. 그러니까 처음에는 50,000원 지폐 몇 장을 거슬러 줄 수 있는지 보는 거죠. 50,000원 지폐로 거슬러 주는 것이 다른 작은 지폐로 거슬러 주는 것보다 무조건 좋기 때문에, 50,000원 지폐부터 보는 것입니다. 67,000원에는 50,000원이 한 번만 들어가기 때문에, 67,000원에서 50,000원을 빼서 17,000원이 남습니다.
그 다음으로 큰 10,000원 지폐를 봅시다. 17,000원에 10,000원이 몇 번 들어가나요? 한 번 들어가죠? 그러면 17,000원에서 10,000원을 빼서 7,000원이 남습니다.
그 다음으로 큰 5,000원 지폐를 봅시다. 7,000원에 5,000원이 몇 번 들어가나요? 한 번 들어가죠? 그러면 7,000원에서 5,000원을 빼서 2,000원이 남습니다.
마지막으로 1,000 지폐를 봅시다. 2,000원에 1,000원이 몇 번 들어가나요? 두 번 들어갑니다.
결론적으로,
- 50,000원 1장
- 10,000원 1장
- 5,000원 1장
- 1,000원 2장
이렇게 되는 것입니다.
'IT > PYTHON' 카테고리의 다른 글
[PYTHON] 파일 읽고 쓰기(과제 : 코딩에 빠진 닭, 단어장만들기, 단어퀴즈, 고급단어장) (0) | 2020.12.26 |
---|---|
[PYTHON] RANDOM 모듈, DATETIME 모듈, INPUT함수(과제 : 숫자맞추기 게임) (0) | 2020.12.26 |
[PYTHON] 리스트와 문자열 관계 정리(과제 : 자릿수 구하기, 주민등록번호 가리기, 팰린드롬) (0) | 2020.12.25 |
[파이썬] 사전(Dictionary) 문제 / 정답 (0) | 2020.12.19 |
[파이썬] for와 range 과제 (0) | 2020.12.18 |
[파이썬] 리스트와 인덱싱 연습문제 (0) | 2020.12.17 |
[파이썬] while, if 문제 (0) | 2020.12.16 |
파이썬 스타일 가이드 (PEP 8)에 따라서 코딩하자! (0) | 2020.12.16 |