Research Notes

[Python Practice] Make Change Calculator using Python 본문

Programming Language/Python

[Python Practice] Make Change Calculator using Python

jiachoi 2023. 7. 3. 16:18

<Question>

# 거스름돈 계산기

# 현명하게 거스름돈을 계산해주는 프로그램을 만드려고 합니다.

# 예를 들어 33,000원짜리 물건을 사기 위해 100,000원을 냈다면,

# 50,000원 1장, 10,000원 1장, 5,000원 1장, 1,000원 2장과 같이 '가장 적은 수'의 지폐를 거슬러 주는 방식입니다.

# payment(지불한 금액)와 cost(가격)라는 파라미터 두개를 필요로 하는 함수 calculate_change를 쓰세요.

# 이 함수는 거스름돈을 위해 50,000원짜리와 10,000원짜리, 5,000원짜리, 1,000원짜리가 각각 몇 장 필요한지 출력해주는 역할을 합니다.

# payment, cost 파라미터의 값은 1,000의 배수라고 가정합시다.

출력은

50000원 짜리 지폐 : 1장

10000원 짜리 지폐 : 1장

5000원 짜리 지폐 : 1장

1000원 짜리 지폐 : 2장

와 같은 형식으로 하세요.

 

<Answer>

def calculate_change(payment, cost) :
    remain = payment - cost
    fifty_thousand = remain // 50000
    ten_thousand = (remain % 50000) // 10000
    five_thousand = ((remain % 50000)%10000) // 5000
    one_thousand = (((remain % 50000)%10000) % 5000 ) //1000

    print("50000원 짜리 지폐 : %d장" %(fifty_thousand))
    print("10000원 짜리 지폐 : %d장" % (ten_thousand))
    print("5000원 짜리 지폐 : %d장" % (five_thousand))
    print("1000원 짜리 지폐 : %d장" % (one_thousand))

calculate_change(100000,33000)

<Explanation>

이 문제를 풀기 위해서는 거스름돈이 제일 큰 화폐로 큰 단위부터 어떻게 거슬러지는지 이해하여야 한다.

예를들어 100,000원 짜리 금액을 33,000원을 주고 샀다고 가정하자

거슬러줘야 할 돈은 67000원이 된다.

거슬러줘야 할 돈을 일단 변수로 만들어서 사용해야 효율적으로 코딩을 할 수 있고 편하기때문에

나는 거슬러줘야 할 돈을 remain이라는 변수로 지정하였다.

=> remain = payment - cost

어떤 원리를 사용하여 효율적으로 거스름돈을 줄수있을까?

67000원에 50000원짜리 하나를 거슬러 줄 수 있는 방법은 무엇일까 고민해봐야 한다.

첫번째로, 50000원짜리 지폐가 몇장인지 지정해주는 변수를 설정한다.

나는 fifty_thousand라는 이름으로 지정할것이다.

=> fifty_thousand = ~

두번째로, 67000원의 거스름돈에 50000원짜리 지폐가 한개 필요한 것을 알기 위해선 나눗셈 해봐야 한다.

67000 / 50000 을 하면 몫은 1, 나머지는 17000이 된다.

50000원짜리가 몇개가 필요한지 알기 위해서는 몫만 필요하므로

fifty_thousand변수는 아래와 같이 설정한다. ( // : 나눗셈에서 몫만 나타내주는 연산자 )

=> fifty_thousand = remain//50000

또 나머지 17000원에서 10000원짜리 지폐가 한개 필요하다는 식을 만들어보자.

67000/50000 = 1...17000 이므로

우리는 여기서의 나머지가 필요하다.

나눗셈에서 나머지는 ( % ) 연산자를 사용하여 표현할 수 있다.

따라서 10000원짜리 지폐가 몇 장 있는지 알아보는 변수는

=> ten_thousand = (remain%50000) // 10000

( 50000원짜리 지폐로 나누고 난 나머지에 10000원을 나누는데 몫만 계산하라는 뜻)

이러한 구조로 5000원짜리, 1000원짜리도 변수를 지정한뒤 값을 할당하여 구하면 된다.

이후 결과값의 출력은 문자열 포맷팅을 사용하여 하면된다!

거스름돈 계산기 예제 실행 화면