문제 :
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
import math
A, B, V = map(int, input().split())
print(math.ceil((V - B) / (A - B)))
코드 설명 :
import math
A, B, V = map(int, input().split())
# 기본 수식은 (A - B) * x >= V 이다.
# x를 기준으로 모두 이항하면, x >= V / (A - B) 가 되는데,
# 분자인 V를 그냥 쓰게 되면, 높이에 도달했을 때도 밤에 내려오게 되는데,
# 높이에서 밤에 다시 내려가는 만큼의 값을 빼면 밤에 내려오는 것을 계산하지 않는다.
# 따라서 수식은 (V - B) / (A - B) 가 되는데 소숫점이 나올 경우에
# 이는 이미 올라갔다는 뜻이라 math 모듈을 사용하여 올림을 해주면 된다.
print(math.ceil((V - B) / (A - B)))
결과 :
반응형
'백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 1085번 직사각형에서 탈출 (파이썬) (0) | 2022.08.15 |
---|---|
백준 알고리즘 1193번 분수찾기 (파이썬) (0) | 2022.08.14 |
백준 알고리즘 1929번 소수 구하기 (파이썬) (0) | 2022.08.09 |
백준 알고리즘 10250번 ACM 호텔 (파이썬) (0) | 2022.08.08 |
백준 알고리즘 4673번 셀프 넘버 (파이썬) (0) | 2022.08.01 |