코딩테스트/기초

백준 2869 달팽이는 올라가고 싶다. - python

math_tbro 2022. 1. 6. 23:45

출처 :

https://www.acmicpc.net/problem/2869

 

2869번: 달팽이는 올라가고 싶다

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

www.acmicpc.net

 

a,b,v = map(int, input().split())
 
dis = v - a
if dis % (a-b) == 0 :
    t = int(dis/(a-b))
else :
    t = int(dis/(a-b)+1)
    
print(t + 1)

풀이 :

while 로 풀면 시간초과가 나온다. 우리가 푸는 수학방식을 선호하지말자.

 

다음은 어떻게 풀었냐면

 

직관적으로 해석 해도 된다 . 일단 쉽게 설명하면 거속시이다.

도착한 날 전날이 아주 중요하다. 그래서 도착 전날을 t라고 하겠다.

그리고 동시에 도착 전날 거리 : v - a 이다

 

이제 거리/속력 으로 시간을 구하겠다.

나머지가 없다면 깔끔하게 dis/(a-b) = time 이 나온다. 저 t는 전날이므로 다음날 도착해서 +1 을 해준다.

나머지가 있다면 조금 골치아프긴한데.  3.7 일이 걸렸다고 가정해보자. 그럼 이건  3일안에 도착한 것이 아니라 그냥 4일로 봐야한다.  그래서 1일 더해준다.