wau2380's playground

[백준/BaekJoon] 2869번 : 달팽이는 올라가고 싶다(파이썬) (코뮤니티 코딩 챌린지) 본문

Algorithm/백준 단계별로 풀어보기

[백준/BaekJoon] 2869번 : 달팽이는 올라가고 싶다(파이썬) (코뮤니티 코딩 챌린지)

wau2380 2021. 9. 5. 23:20

문제

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

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

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

입력

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

출력

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

 

풀이

머리가 안좋은건지 아니면 열심히 안한건지는 몰라도 꽤나 오랫동안 고민했다. 

예제 입력에 A = 2, B = 1, V = 5 가 주어졌다. 

아침에는 2만큼 올라갔다가 밤에는 1만큼 떨어진다. 단순히 A-B = V 로 수식을 짠다면 문제를 맞을 수 없다.

그래서 V - B를 했다. 의미는 "밤을 계산하지 않겠다" 라는 의미다. 

B는 밤에 Bm만큼 떨어지는 것을 의미한다. 그러나, 아침에 이미 Vm이상을 갔으면 밤에는 떨어지면 안된다.

( V-B / A-B ) 가 수식이 된다. (참고 소수점은 올림했다.)

코드

import math
A,B,V = map(int, input().split())
if B >= A:
	print("-1")
else:
	print(math.ceil((V-B)/(A-B)))