처음으로 시간 초과 에러가 발생했다.
크기가 작은 입력값들에 대해서는 잘 작동하는데 나무의 높이가 아주 높을 경우에 이 에러가 발생하는 듯하다.
먼저 처음 작성한 코드
import sys
A, B, V = map(int, sys.stdin.readline().split())
total = 0
day = 0
while True:
day += 1
total += A
if total >= V:
break
else:
total -= B
print(day)
분명 저 반복문에서 시간 초과 에러가 발생했을 것이다.
반복문을 사용한 이유는 밤에 미끄러지지만 '정상에 도달하면' 미끄러지지 않는다는 조건을 반영하기 위해
A를 더하고 B를 빼기 전 total >= V 여부를 확인하기 위함이었다.
반복문 없이 이를 반영하려면 어떻게 해야 할까?
import sys
import math
A, B, V = map(int, sys.stdin.readline().split())
total = 0
day = 0
day = (V - B) / (A - B)
print(math.ceil(day))
먼저 올라가야 하는 높이를 V-B로 간주한다.
이렇게 하면 하루동안 올라가는 높이를 A-B로 생각할 수 있게 된다.
이제 V-B를 A-B로 나눈 뒤 올림하면 정상에 도달하는 데 며칠이 걸리는지 알 수 있다.
시간 초과 에러가 발생했을 땐 쓸데없는 반복이 이루어지지는 않는지 확인해보자.