품생품사(品生品死)

소프트웨어 품질에 살고 품질에 죽는 그런 평범한 일상 블로그

TESTING/PROGREMING

[파이썬 코딩 - Chap.5] 실습 간단한 거스름 돈 계산기 문제 풀어보기

품생품사(品生品死) 2020. 11. 3. 00:10
반응형

파이썬 예제 : 거스름돈 계산기

예제를 풀면서 파이썬(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):
# 코드를 작성하세요.

# 테스트
calculate_change(100000, 33000)
print()
calculate_change(500000, 378000)
함수를 쓰고 프로그램을 실행하면 아래와 같은 결과값이 콘솔에 출력되어야 합니다.
50000원 지폐: 1장
10000원 지폐: 1장
5000원 지폐: 1장
1000원 지폐: 2장

50000원 지폐: 2장
10000원 지폐: 2장
5000원 지폐: 0장
1000원 지폐: 2장

 

힌트

1. 의미 있는 변수 이름을 사용해 주세요!

- 예를 들어서 5만원, 1만원, 5천원, 1천원을 셀 때는 각각,

  • fifty_thousand
  • ten_thousand
  • five_thousand
  • one_thousand

또는

  • fifty_count
  • ten_count
  • five_count
  • one_count

이런 식으로 알아보기 쉬운 변수 이름을 사용하는 것이 좋습니다.

그게 왜 중요할까요?

 

향후 복잡한 프로그램을 짜게 되면 변수를 여기저기서 사용해야 하는데요. 

이름이 a, b, c, d처럼 의미 없이 설정되어 있으면, 변수를 활용하기도 어렵고 프로그램의 가독성도 떨어집니다.

특히 다른 개발자와 협업을 할 때 그 문제는 더 심각해집니다.

 

2. 예를 통해 생각해 보는 것이 가장 좋습니다.

- 물건 가격이 33,000원인데 100,000원을 받았다면, 차액에 해당하는 67,000원을 거슬러 주어야겠죠?

- 67,000원을 거슬러 주려면 50,000원짜리 지폐 1장이 필요합니다.

- 1장이 필요하다는 것은 67000 // 50000을 계산함으로써 구할 수 있습니다.

- 그러면 67000 % 50000인 17000원이 남겠죠?

 

3. 5만원 지폐 개수를 계산하는 코드만 보여드리겠습니다.

def calculate_change(payment, cost):
     change = payment - cost # 거스름돈 총액

     fifty_count = change // 50000 # 5만원 지폐

     # 답 출력
     print("50000원 지폐: {}장".format(fifty_count))

# 테스트
calculate_change(100000, 33000)
print()
calculate_change(500000, 378000)
50000원 지폐: 1장

50000원 지폐: 2장

 

정답

main.py
def calculate_change(payment, cost):
    change = payment - cost
    
    fifty_count = change // 50000
    fifty_thousand = change % 50000
    ten_count = fifty_thousand // 10000
    ten_thousand = fifty_thousand % 10000
    five_count = ten_thousand // 5000
    five_thousand = ten_thousand % 5000
    one_count = five_thousand // 1000
    one_thousnd = five_thousand % 1000
    
    print("50000원 지폐: {}장".format(fifty_count))
    print("10000원 지폐: {}장".format(ten_count))
    print("5000원 지폐: {}장".format(five_count))
    print("1000원 지폐: {}장".format(one_count))


# 테스트
calculate_change(100000, 33000)
print()
calculate_change(500000, 378000)

 

Related References

 

코딩이 처음이라면, 코드잇

월 3만원대로 Python, JavaScript, HTML/CSS, Java 등 1,600개 이상 프로그래밍 강의를 무제한 수강하세요

www.codeit.kr:443

This is coding_000
PYTHON 프로그래핑

요약 : sparta coding club, 스파르타 코딩, 코드잇, 노마드 코더, 프로그래밍, 직장인 코딩, 내일 배움 카드 코딩, 밀크티 코딩, 초등 코딩, 아이스크림 코딩, 코딩 소프트웨어, 파이썬 국비 지원, 파이썬 교육

728x90
반응형