본문 바로가기
개발일지/Python

Day2, 챕터3 그리디 일부. 거스름돈 알고리즘

by 다니엘의 개발 이야기 2022. 5. 18.
320x100

챕터3 그리디에서 알고리즘을 풀어야하는 파트는 4부분으로 나뉜다.

 

1.거스름돈

2.큰 수의 법칙

3.숫자 카드 게임

4.1이 될때까지

 

그 중에서 시간 및 체력관계상 오늘은 거스름돈 알고리즘만 풀어보고 나머지는 푸는대로 올려볼 계획이다.

 

# 나의 코드
def exchange(n):
    exchange500Cnt = 0
    exchange100Cnt = 0
    exchange50Cnt = 0
    exchange10Cnt = 0

    while n > 10:
        total = n
        if n >=500:
            exchange500Cnt += n//500
            total = n % 500
        if n >= 100:
            exchange100Cnt += total //100
            total %= 100

        if n >= 50:
            exchange50Cnt += total // 50
            total %= 50

        if n>= 10:
            exchange10Cnt += total // 10
            total %= 10

        result = (f'{n}원에 대한 거스름돈: 500원: {exchange500Cnt}개, 100원:{exchange100Cnt}개, '
              f'50원:{exchange50Cnt}개, 10원: {exchange10Cnt}개. 나머지: {total}원')
        break
    return result

x = int(input('잔돈으로 변경 원하는 금액은?: '))
print(exchange(x))

 

# 해답코드

n = 1260
count = 0

# 큰 단위의 화폐부터 차례대로 확인
coin_types = [500,100,50,10]

for coin in coin_types:
    count += n //coin
    n %= coin

print(count)
# 정말 간단하다.
# 단순히 거슬러줘야하는 동전의 갯수를 구하는 측면에서는 좋은 코드라고 볼 수 있다.
# 하지만 더 나아가서 어느 동전을 몇개를 거슬러 줘야하는지, 그 거스름의 총액은 얼마인지 구하는
# 간단한 수식은 어떨지가 너무 궁금하다.
300x250