알고리즘 연습/수학, 정수론, 기하

[백준 2869] 기본 수학 1 - 달팽이는 올라가고 싶다

김세진 2021. 5. 24. 22:53
반응형

문제

땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.

달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다.

또, 정상에 올라간 후에는 미끄러지지 않는다.

달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

출력

첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.

예제 입력

2 1 5

예제 출력

4

 

 

풀이

 

시간 제한이 0.15초인 문제로, 반복문을 통해 해결하려 한다면

 

1,000,000,000 같은 입력값이 들어왔을 경우 당연히 시간 초과가 나고 말 것이다.

 

그렇다면 단순 계산식을 통해 해결할 수 있는 문제라는 말이다.

 

단순히 생각해보자면, 낮에 A만큼 올라가고 밤에 B만큼 미끄러지니 하루에 A-B 만큼 올라간다는 것을 알 수 있다.

 

다만, V만큼 올라가기만 하면 B만큼 내려오는 것은 계산에 포함하면 안 된다.

 

따라서 최대 높이에서 미끄러질 길이를 미리 빼 주면 된다.

 

그리고 남은 높이를 하루에 올라가는 비율로 나눠주면 끝.

 

import math
a,b,v = map(int,input().split())
print(math.ceil((v-b)/(a-b)))
반응형