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보다 작으면 반복문을 탈출하고 먹은 치킨의 수를 출력한다.
'백준 > 브론즈2' 카테고리의 다른 글
| [Python] 백준 1212번 - 8진수 2진수 (0) | 2025.04.26 |
|---|---|
| [Python] 백준 1152번 - 단어의 개수 (0) | 2025.04.26 |
| [Python] 백준 1100번 - 하얀 칸 (0) | 2025.04.25 |
| [Python] 백준 1076번 - 저항 (0) | 2025.04.24 |
| [Python] 백준 1075번 - 나누기 (0) | 2025.04.24 |