문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 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을 해주면 정답이 나온다.
'코딩테스트 > 알고리즘 문제풀이' 카테고리의 다른 글
[파이썬] 2775 : 부녀회장이 될테야 (0) | 2021.02.19 |
---|---|
[파이썬] 10250 : ACM호텔 (0) | 2021.02.15 |
[파이썬] 1712 : 손익분기점 (0) | 2021.02.14 |
1099 : [기초-2차원배열] 성실한 개미 (0) | 2021.02.14 |
1098 : [기초-2차원배열] 설탕과자 뽑기 (0) | 2021.02.12 |
댓글