[파이썬] 거스름 돈 계산하기

2020. 12. 16. 07:39IT/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장

이렇게 되는 것입니다.