캠핑장을 연속하는 P일 중, L일 동안만 사용할 수 있을 때,
V일 짜리 휴가를 시작한다면 캠핑장을 최대 며칠동안 사용할 수 있는지 구하는 문제입니다.
캠핑장을 최대로 사용하기 위해서는,
휴가 시작하자마자 L일을 연속해서 사용하고,
P-L 일만큼 사용하지 않은 뒤,
다시 L일을 연속해서 사용해야 합니다.
예를 들어, 연속하는 8일(P) 중 5일(L) 동안만 사용할 수 있는 캠핑장에
20일(V) 짜리 휴가를 사용해서 가면
5일(사용) -> 3일(미사용) -> 5일(사용) -> 3일(미사용) -> 4일(사용)
하여 최대 14일을 사용할 수 있습니다.
import sys
def main():
case = 1
while True:
L, P, V = map(int, sys.stdin.readline().rstrip().split())
if not L:
break
total = 0
quotient, remainder = divmod(V, P)
total = quotient * L + min(remainder, L)
print(f"Case {case}: {total}")
case += 1
if __name__ == "__main__":
main()
python
에는 몫과 나머지를 한번에 구할 수 있는 divmod
함수가 있습니다.
이 divmod
함수는 (몫, 나머지) 형태의 tuple
을 리턴합니다.
그렇기 때문에 정수 형태의 몫을 리턴합니다.
단, 작은 숫자를 다룰 때에는 a//b
, a%b
가 더 빠르다고 합니다.