Koala - 9기/기초 알고리즘 스터디

[백준/Python] 1673번 치킨쿠폰

en2014 2023. 1. 22. 23:34

https://www.acmicpc.net/problem/1673

 

1673번: 치킨 쿠폰

강민이는 치킨 한 마리를 주문할 수 있는 치킨 쿠폰을 n장 가지고 있다. 이 치킨집에서는 치킨을 한 마리 주문할 때마다 도장을 하나씩 찍어 주는데, 도장을 k개 모으면 치킨 쿠폰 한 장으로 교환

www.acmicpc.net

문제분석

입력으로 주어지는 것: 현재 갖고있는 치킨쿠폰 개수, 치킨쿠폰 하나로 교환할 수 있는 도장의 개수(k)
출력: 최대로 먹을 수 있는 치킨의 개수

 

문제풀이

재귀함수를 이용해서 문제를 해결 하였다.
(현재 갖고있는 쿠폰 수,  k, 현재 까지 먹은 치킨의 개수)를 입력받고
함수안에서는, 한 프로세스에서 새로 생기는 쿠폰을 포함한 현재 갖고있는 쿠폰 수를 계산하고,
지금 프로세스에서 먹은 치킨을 누적해서 함수를 다시 호출 하였다.

def calc(coupon, k, chicken):
    if coupon < k:
        chicken += coupon
        return chicken
    new_coupon = coupon //k + coupon % k
    chicken += coupon // k * k
    return calc(new_coupon, k, chicken)

while True:
    try:
        coupon, k = map(int, input().split())
        chicken = 0
        chicken = calc(coupon, k, chicken)
        print(chicken)
    except EOFError:
        break