BOJ 2869번: 달팽이는 올라가고 싶다 [Python]

hysong·2022년 6월 24일
0

PS

목록 보기
5/15

📌 Problem.

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

낮에 A만큼 올라가고 밤에 B만큼 내려가는 달팽이가
높이 V에 도달하는 데 걸리는 날짜를 계산하는 문제이다.

📌 Solution.

시간 제한 0.15초가 걸려 있고, V의 최댓값이 1,000,000,000이다.
따라서 수학적 연산을 통해서 문제를 해결할 수 있으리라 생각했다.

import sys

input = sys.stdin.readline
A, B, V = map(int, input().split())

ans = (V - B) // (A - B)
if (V - B) % (A - B) > 0:
    ans += 1
print(ans)

처음부터 V - B의 높이를 올라간다고 생각하면 쉽게 풀리는 문제이다.
V에 도달하는 것은 결국 낮이기 때문이다.
당연하게도 밤에 흘러내리다가 V에 도달할 일은 없다.

A - B의 간격으로 V - B에 완전히 도달하지 못 하는 경우가 있더라도, 그 간격은 낮에 충분히 올라갈 수 있을 것이다.
A > B이므로 (V - B) + A > V이기 때문이다.
이 경우에 대해서만 하루를 더 추가해주면 된다.

0개의 댓글