[BaekJoon] 1673 : 치킨 쿠폰
🔒 문제
강민이는 치킨 한 마리를 주문할 수 있는 치킨 쿠폰을 n장 가지고 있다. 이 치킨집에서는 치킨을 한 마리 주문할 때마다 도장을 하나씩 찍어 주는데, 도장을 k개 모으면 치킨 쿠폰 한 장으로 교환할 수 있다.
강민이가 지금 갖고 있는 치킨 쿠폰으로 치킨을 최대 몇 마리나 먹을 수 있는지 구하여라. 단, 치킨을 주문하기 위해서는 반드시 치킨 쿠폰을 갖고 있어야 한다.
🛫 입력
여러 줄에 걸쳐서 자연수 n과 k가 주어진다.
🛬 출력
각 입력마다 한 줄에 정답을 출력한다.
🗿 제한
- 1 < k ≤ n ≤ 1,000,000,000
🔑 풀이
🙅 첫 번째 풀이 : 런타임 에러
무언가 많이 잘못된 코드..
while True :
n, k = map(int, input().split())
try :
if (n > 0 and k > 0) : # 1 < k <= n
d = n//k
result = n + d
while (d >= k) :
d //= k
result += d
print(result)
except :
break
🙅 두 번째 풀이 : 틀렸습니다!
반복문으로 여러 줄 입력을 받는 상황을 위해 sys.stdin.readline()을 사용했다.
try-except 문을 이용해 입력값이 없는 경우 프로그램이 종료되도록 했다.
근데 왜 틀린걸까..
import sys
while 1 :
try :
n, k = map(int,sys.stdin.readline().split()) # 반복 입력 받을 때
if (k > 1 and n >= k) :
d = n//k
result = n + d
while (d >= k) :
d //= k
result += d
print(result)
except ValueError :
break
📌 Pinned
반복문으로 여러줄 입력받는 상황에서는 반드시 sys.stdin.readline()을 사용해야 시간 초과가 발생하지 않는다.
Author And Source
이 문제에 관하여([BaekJoon] 1673 : 치킨 쿠폰), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kpk0616/BeakJoon-1673-치킨-쿠폰저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)