Computer Science/Competitive Programming

[백준] 2869 (달팽이는 올라가고 싶다)

specidiee 2025. 11. 20. 18:00

문제 요약

낮에 A미터 올라갈 수 있지만, 밤에 B미터 미끄러져 내려가는 달팽이가 있습니다. V미터 높이를 올라가야 하는데 정상에 올라간 후에는 미끄러지지 않는다고 할 때, 정상에 오를 때까지 며칠이 걸리는지 계산해야 합니다.

해설

달팽이가 d일 만에 정상에 오른다고 해 봅시다. 그러면 d-1번의 밤을 겪었고, 그 동안의 누적된 높이는 $(d-1)(A-B)$가 될 것입니다.

마지막 날 낮에는 거기서 A만큼 추가로 올라가며, 정상에 도달해서 미끄러지지 않습니다. 따라서 최종 높이는 $(d-1)(A-B)+A$가 되고, 이것이 V 이상이면 됩니다. 즉, $(d-1)(A-B)+A\ge V$

찾아낸 부등식을 d에 대해 풀면:
$d(A-B)\ge (V-B)$
여기서 d는 자연수이므로 $d=\lceil\frac{V-B}{A-B}\rceil$가 됩니다. 이제 정수 나눗셈과 올림을 적절히 구현하면 됩니다.

배울 점

사칙연산으로 풀 수 있지만, 구현해야 하는 한 줄의 수식이 꽤 직관적이지 않은 Bronze 난이도 중에서 까다로운 문제입니다. 문제의 상황을 한 가지씩 수식으로 표현하면서 차근차근 논리를 전개하면 어렵지 않게 답을 얻을 수 있을 것입니다.

'Computer Science > Competitive Programming' 카테고리의 다른 글

[백준] 31430 (A+B - 투 스텝)  (0) 2025.11.20
[백준] 1193 (분수찾기)  (0) 2025.11.20
[백준] 2292 (벌집)  (0) 2025.11.20
[백준] 10250 (ACM 호텔)  (0) 2025.11.20