위 그림에서 크게 두 가지 경우로 나눌 수 있다.
1번의 경우에는 남은 휴가일수에서 P일을 빼고, 결과(휴가 기간동안 캠핑장을 사용 할 수 있는 일수)에 사용할수 있는 일수 L을 더해주면 된다.
2번의 경우에는 또 두 가지로 나눌 수 있는데,
1번의 경우엔 결과에 L을 더해주고 결과를 return 한다.
2번의 경우엔 남은 휴가기간동안 사용가능한 일수 L만큼 캠핑장을 다 쓸 수 없으므로 결과에 V를 더해주고 return 한다.
[풀이1] 과 큰 차이는 없지만,
결과 += (V를 P로 나눈 값) * L
으로 풀이 1의 한 단계를 해결한다.
그러고 나서 V를 P로 나눈 나머지값을 저장하고 남은 휴가일수 V를 계산한 뒤, 풀이2의 두번째 과정을 시행한다.
import sys
def solution(L: int, P: int, V: int):
result = 0
while True:
if V - P > 0:
result += L
V -= P
else:
if V > L:
result += L
else:
result += V
return result
i = 1
while True:
L, P, V = map(int, sys.stdin.readline().split())
if V == 0: break
print(f"Case {i}: {solution(L, P, V)}")
i += 1
import sys
def solution(L: int, P: int, V: int):
result = 0
result += (V // P) * L
carry = V % P
V -= (V // P) * P
if carry > L:
return result + L
else:
return result + V
i = 1
while True:
L, P, V = map(int, sys.stdin.readline().split())
if V == 0: break
print(f"Case {i}: {solution(L, P, V)}")
i += 1