출처 :
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일 더해준다.
'코딩테스트 > 기초' 카테고리의 다른 글
백준 2775 부녀회장이 될거야 - python (0) | 2022.01.07 |
---|---|
백준 10250 acm 호텔 - python (0) | 2022.01.07 |
백준 1193 분수찾기 - python (0) | 2022.01.06 |
백준 2292 벌집 - python (0) | 2022.01.06 |
백준 1712 손익분기점 - python (0) | 2022.01.06 |