출처 : https://www.acmicpc.net/problem/2869
import math
a, b, v = map(int, input().split())
x = v - a
d = math.ceil(x / (a - b))
print(d + 1)
낮에 2미터(=a) 올라가고 밤에 1미터(=b) 미끄러지는 달팽이가 5미터(=v)의 막대를 올라가는 경우를 가정해보자.
마지막 낮 이전에 3미터(v - a = x) 이상 올라간 상태라면, 낮 동안 2미터를 올라가 정상에 도달할 수 있다.
하루의 낮과 밤에는 1미터(a - b)를 올라가기 때문에
3일(x/(a - b)) + 1일 = 총 4일이면 정상에 도착한다.
다음으로 a = 5, b = 2, v = 10 인 경우를 가정해보자.
마지막 낮 이전에 5미터 이상 올라가면 낮 동안 정상에 도달할 수 있고,
5미터에 도달하는데는 최소 2일 걸리기 때문에
총 3일이면 정상에 도착한다.
따라서 마지막 낮 이전에 올라가야하는 높이(x = v - a)를 하루 낮과 밤 동안 올라가는 높이(a - b)로 나눈 값을
올림한 후 1을 더해주면 최종적인 결과가 나온다.
math.ceil()
올림을 계산하는 함수를 사용하기 위해서는 먼저 import math 명령어로 math 모듈을 가져와야 한다.
내림은 math.floor()
반올림은 모듈을 가져올 필요 없이 round() 함수를 사용하면 된다.
'알고리즘 문제 풀이' 카테고리의 다른 글
백준 1978번 : 소수 찾기 (Python) (0) | 2022.10.17 |
---|---|
백준 10250번 : ACM호텔 (Python) (0) | 2022.10.14 |
백준 1110번 : 더하기 싸이클 (Python) (0) | 2022.10.07 |
백준 2588번 : 곱셈 (Python) (0) | 2022.10.06 |
백준 1000번 : A + B (Python) (0) | 2022.10.05 |
댓글