코드
import math
a, b, v = map(int, input().split())
v = v - a
day = 1
x = math.ceil(v / (a-b))
day += x
print(day)
풀이
문제를 읽으면 반복문이 가장 먼저 생각나는데, 시간 제한이 0.25초로 굉장히 짧기 때문에 무조건 실패하는 방법이다..
따라서, 달팽이가 a만큼을 오른 후 v라는 정상에 도착하지 않으면 다시 b만큼 내려오고, 그걸 반복하는 알고리즘을 반복문 사용없이 구현하는 방법을 생각해야 한다.
난 수학에 약해서인지, 떠올리는데 2시간이 소요되었음 ...
우선, 한 줄에 a, b, v를 int형으로 입력받기 위해 map 함수를 써주었다.
그리고, 정상에 도착하기 직전에는 달팽이가 무조건 마지막으로 a만큼 오르기 때문에 목표값인 v에서 a만큼 빼주었다.
정상에 도착하는 것도 1일로 계산하기 때문에 day의 초깃값은 1로 해주었다.
그 후 목표값인 v로 향해 올라가는데 달팽이가 얼마나 밤을 보내며 미끄러졌는지.. 계산하기 위해 올라간 후 미끄러진 값을 뺀 a-b으로 목표값을 나누어주었다. math.ceil()은 값을 무조건 올림해주는 함수이다.
그 값이 마지막 정상에 올라가기 직전 달팽이가 보낸 날이기 때문에 day에 더해주면 끝!