tier 달팽이는 올라가고 싶다

풀이

를 더하고 를 빼는 것을 계속 반복해서 답을 구하려고 하면 시간 복잡도가 가 되므로 시간 초과를 받습니다. 조금 고민해보면 수학을 통해 식 하나로 빠르게 답을 구할 수 있습니다.

달팽이가 낮에 미터 올라가고 밤에 미터 미끄러지는 것을 하루에 미터 올라가는 것으로 생각해 봅시다.

그렇다면 미터를 올라가기 위해서 적어도 일이 필요함을 알 수 있습니다. (은 올림 기호입니다.)

여기서 밤에 미끄러지기 전 낮에 나무 막대를 전부 올라가는 경우에는 이 식으로 정답을 구할 수 없으므로 미터를 넘지 않으면서 가장 높게 올라가는데 걸리는 날을 구해 봅시다.

남은 높이가 보다 작거나 같으면 바로 나무 막대를 올라갈 수 있으므로 가 나무 막대를 오르지 않고 가장 높게 올라가는데 걸리는 날의 수가 됩니다. 이때 남은 높이는 보다 작거나 같으므로 여기에 1을 더하면 답이 됩니다.

코드

from math import ceil
 
 
def main():
    A, B, V = map(int, input().split())
    print(ceil((V - A) / (A - B)) + 1)
 
 
main()