코딩테스트/알고리즘 문제풀이

[파이썬] 2869 : 달팽이는 올라가고 싶다.

지과쌤 2021. 2. 15.
반응형

문제

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

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

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

입력

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

출력

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

예제 입력 1 복사

2 1 5

예제 출력 1 복사

4

예제 입력 2 복사

5 1 6

예제 출력 2 복사

2

예제 입력 3 복사

100 99 1000000000

예제 출력 3 복사

999999901

 

정답

import math
a, b, v = map(int, input().split())
print(math.ceil((v-a)/(a-b)+1))

 

------------------|-----|

                        ^ : 한번에 올라갈 수 있는 길이

 

---------------|--|

         ^ : 전체 길이 / 순수하게 하루동안 올라가는 길이

 

정상에 올라간 후에는 미끄러지지 않고, 마지막날 올라갈때에는 정상에 닿기만 하면 되므로 일단 전체 길이에서 한번 올라가는 길이를 빼준다.

 

이후, 남은 길이를 하루동안 순수하게 올라가는 길이로 나누어준다.

이때 깔끔하게 나누어 떨어지거나, 위처럼 약간의 남는 길이가 생기는 경우가 있다. 이 길이는 무조건 한번에 올라갈 수 있는 길이보다 짧으므로, 일단 올림 처리를 해주고 마지막날 올라가기만 하는 길이를 생각해 +1을 해주면 정답이 나온다.

 

반응형

댓글

💲 추천 글