코딩 테스트/백준

백준 - [단계별로 풀어보기 수학1] 2869 달팽이는 올라가고 싶다

devrabbit22 2026. 3. 24. 03:57

이번 문제는 처음에 단순하게 while문을 사용해 해결하려 했지만, 시간 초과가 발생했다.
높이 변수를 두고 반복문을 통해 하루씩 이동하며 목표 높이에 도달하면 종료하는 방식으로 접근했지만, 이 문제는 단순 반복으로 해결하는 문제가 아니었다.

이후 다른 풀이를 참고하면서 (V - B) / (A - B)라는 공식을 접했지만, 처음에는 단순한 공식처럼 보여 이해하기 어려웠다.
문제를 다시 생각해보니 중요한 포인트는 "마지막 날에는 내려오지 않는다"는 점이었다.

즉, 목표 높이 V에 도달하는 순간에는 밤이 되지 않기 때문에, V까지 가는 것이 아니라 V - B까지 도달하면 다음 날 A만큼 올라가며 목표에 도달하게 된다.

결국 이 문제는 하루 동안의 순이동 거리(A - B)와 마지막 날의 예외 상황을 고려하는 문제였다.
하루 동안 실제로 올라가는 높이는 (A - B)이므로, (V - B)까지 도달하는 데 필요한 일수는 (V - B) / (A - B)로 계산할 수 있다.
이때 나누어 떨어지지 않는 경우에는 하루가 더 필요하므로, 나머지가 존재하면 1을 추가해준다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    internal class math1
    {
        static void Main(string[] args)
        {
            //백준 2869 달팽이는 올라가고 싶어
            string[] input = Console.ReadLine().Split();
            int A, B, V = 0;
            A = int.Parse(input[0]); // 낮에 올라가는 높이
            B = int.Parse(input[1]); // 밤에 내려오는 높이
            V = int.Parse(input[2]); // 목표 높이

            // 하루 순이동 거리 = A - B
            // 마지막 날에는 내려오지 않으므로 V - B까지 올라가는 데 걸리는 일수를 계산
            int day = (V - B) / (A - B);

            // 나누어 떨어지지 않으면 하루가 더 필요 (하루 추가)
            if ((V - B) % (A - B) != 0)
                day++;

            Console.WriteLine(day);
        }
    }
}

출력 결과 1
출력 결과 2
출력 결과 3

 

이번 문제를 풀면서 수학적인 사고가 아직 부족하다고 느꼈다.
처음에는 단순히 반복문을 통해 해결하려 했지만, 시간 초과가 발생하면서 문제를 다시 바라보게 되었다. 이후 공식을 접했을 때도 단순히 외워야 하는 식처럼 느껴져 이해가 쉽지 않았다.
하지만 문제를 다시 해석하고, “마지막 날에는 내려오지 않는다”는 핵심 포인트를 이해하면서 식이 자연스럽게 도출된다는 것을 알게 되었다. 앞으로 다양한 문제를 풀면서 이러한 수학적 사고를 점차 익혀나가야겠다고 생각했다.


참고

https://www.acmicpc.net/board/view/112251

 

[백준] 2869번: 달팽이는 올라가고 싶다 | C++ 풀이

# 문제 🐌 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. # 풀이 아주 귀여운 문제지만 시간 제한을 신경써야 하는 문제다. 정답 코드부터 한 번 확인

carrot-farmer.tistory.com

 

 

백준 2869번 C언어 풀이

https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 낮에 a만큼 올라가고 밤에 b만큼

codejin.tistory.com