https://www.acmicpc.net/problem/1673
문제 전문은 링크 참조
문제가공
본 문제를 1차적으로 정리하자면 아래와 같다.
- 가지고 있는 쿠폰으로 치킨을 시킨다
- 치킨 한마리당 도장하나를 받는다
- 받은 도장을 쿠폰으로 바꾼다
- 1번 으로 돌아가서 더 이상 주문 하지 못할때 까지 반복
치킨을 주문할 때마다,
- 현재먹은 치킨 수
- 남은 쿠폰 수
- 남은 도장 수
를 관리 해야 하는데, 관리해야 할 변수가 많아지면 계산이 복잡해지므로
아래와 같이 문제를 2차 가공한다
2차가공
- 가지고 있는 쿠폰을 스탬프로 바꾼다.
- 쿠폰의 개념을 삭제하고 치킨과 스탬프 개수만 계산하자
코드작성
import sys
while True:
input = sys.stdin.readline().rstrip()
if input == '':
break
my_coupon , stampForOnechicken = map(int, input.split())
myStamp = my_coupon * stampForOnechicken # 쿠폰 * 필요 도장 수
chickens = 0
while myStamp >= stampForOnechicken:
c = myStamp // stampForOnechicken
chickens += c
myStamp = c + (myStamp % stampForOnechicken)
print(chickens)
리뷰
간단해 보이는데 코드화 하려니 시간을 꽤나 잡아 먹었다.
'Python > 백준 (BOJ)' 카테고리의 다른 글
[BOJ][B2]암호- 1718 (0) | 2025.08.10 |
---|---|
[BOJ][B2]손익분기점-1712 (1) | 2025.08.09 |
[BOJ][B2]줄 세우기 - 1681 (1) | 2025.08.08 |
[BOJ][B2]트로피 진열 - 1668 (1) | 2025.08.06 |
[BOJ][B2]영식이와 친구들 - 1592 (4) | 2025.08.05 |