알고리즘
[백준 2869] 달팽이는 올라가고 싶다 - 수학
kyeongjun-dev
2021. 12. 29. 13:32
코드
def solution(a, b, v):
answer = (v-b) // (a-b)
if (v-a) % (a-b) == 0:
return answer
else:
return answer+1
a, b, v = map(int, input().split())
print(solution(a, b, v))
설명
- 하루에 올라갔다가 내려오는 높이(b-a)로 v를 나누는 방식으로 반복문을 돌리면 시간초과가 난다(2, 1, 10억이 입력이면 loop를 도는데 10억번 돈다.)
- 총 거리인 v 에서 낮에 올라갈 수 있는 거리인 a를 뺀다.
- 이 v-b 길이를 하루방 동안 올라갔다 내려오는 거리인 b-a 로 나눈다.
- 이때 나누어 떨어지면 나눈 값을 출력한다.
- 나누어 떨어지지 않으면 하루 더 올라가야 하므로 1을 더한 값을 출력한다.
- 위 그림을 예시로 보면, 총 10일이 걸린다.
- 이때 마지막날의 전 날에는 18까지 갈 수 있다. 이제 4를 가니까 정상에 오른다.