관리 메뉴

솜씨좋은장씨

[BaekJoon] 5585번 : 거스름돈 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 5585번 : 거스름돈 (Python)

솜씨좋은장씨 2022. 6. 13. 23:58
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 거스름돈 입니다.

 

5585번: 거스름돈

타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사

www.acmicpc.net

👨🏻‍💻 문제 풀이

change_list = [500, 100, 50, 10, 5, 1]

먼저 거스름돈으로 주고자하는 금액 목록을 큰 값 순서대로 리스트에 담은 리스트를 하나 만들어 줍니다.

change = 1000 - money_to_pay

입력 받은 금액을 활용하여 내가 받는 거스름돈의 총 금액을 구합니다.

change_idx = 0 # 거스름돈 금액 idx 0 ~ 
    
change_num = 0 # 거스름돈 개수

change_list 에서 금액을 꺼내올 때 쓸 idx 값인 change_idx

총 거스름돈의 개수를 구할때 쓸 change_num 변수를 만들어줍니다.

while True:
    if change == 0:
        break

    if change_list[change_idx] > change:
        change_idx += 1
    else:
        change -= change_list[change_idx]
        change_num += 1

이제 while 반복문을 활용합니다.

if change == 0:
    break

남은 거스름돈이 0이 될때 반복문을 중단합니다.

if change_list[change_idx] > change:
    change_idx += 1
else:
    change -= change_list[change_idx]
    change_num += 1

만약 현재 남은 거스름돈이 내가 현재 change_list 에서 꺼내온 값보다 작을 경우 

change_idx를 1증가시키고

그렇지 않을 경우

change_list에서 꺼내온 값을 현재 남은 거스름돈 총액 빼준 후 

거스름돈 개수를 1 증가시킵니다.

 

전체 코드는 아래를 참고해주세요.

👨🏻‍💻 코드 ( Solution )

def calculate_change(money_to_pay):
    change_list = [500, 100, 50, 10, 5, 1]
    
    change = 1000 - money_to_pay
    
    change_idx = 0
    
    change_num = 0
    
    while True:
        if change == 0:
            break
            
        if change_list[change_idx] > change:
            change_idx += 1
        else:
            change -= change_list[change_idx]
            change_num += 1
        
    return change_num
        
    
if __name__ == "__main__":
    money_to_pay = int(input())
    
    print(calculate_change(money_to_pay))
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments