백준/브론즈2

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

두부마라탕 2025. 4. 25. 20:11

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


문제

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

강민이가 지금 갖고 있는 치킨 쿠폰으로 치킨을 최대 몇 마리나 먹을 수 있는지 구하여라. 단, 치킨을 주문하기 위해서는 반드시 치킨 쿠폰을 갖고 있어야 한다.

 

코드

import sys

for line in sys.stdin:
    if not line.strip():
        continue
    n, k = map(int, line.strip().split())

    ck = n
    tmp = n

    while tmp >= k:
        extra = tmp // k
        ck += extra
        tmp = tmp % k + extra

    print(ck)

 

풀이

처음에 치킨 쿠폰 계산 로직만 짜고 계속 틀려서 뭔가 했더니 입력을 계속 받아야 한다는 것을 깨달았다. 그래서 sys 모듈을 사용했다.

1. 입력 받아오고 빈 줄이면 pass

2. 받은 입력에서 n, k를 저장

3. tmp가 k보다 크거나 같을 때까지 반복

4. extra는 일단 가지고 있는 쿠폰에서 시켜먹은 치킨의 수(= 새로 받은 도장의 수)다.

5.  치킨 시켜먹었으니까 ck += extra를 해준다.

6. 시켜먹었으니까 남은 쿠폰 수랑(tmp % k) 시켜먹고 새로 받은 쿠폰 수를 더해주고 반복문을 다시 시행한다.

7. tmp가 k보다 작으면 반복문을 탈출하고 먹은 치킨의 수를 출력한다.