[C#] 백준 2869번 달팽이는 올라가고 싶다

2021. 12. 21. 22:12C#/[백준] 기본 수학1

문제

정답 코드 :

using System;
namespace _4
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string input = Console.ReadLine();
            string[] inputArray = input.Split(' '); 
            double A = Convert.ToInt32(inputArray[0].ToString());
            double B = Convert.ToInt32(inputArray[1].ToString());
            double V = Convert.ToInt32(inputArray[2].ToString());

            /* 5,1 6 일때 6-5인 1이라는 층이 있고 나는 한번에 5-1, 즉 4만큼 올라갈 수 있다.
            반올림을 하지 않으면 1.25가 나오는데 0.25의 의미는
            0.25만큼의 힘을 주고 올라갔다는 뜻. 즉, 0.25의 힘을 가지고 시도를 한거기때문에
            카운트함 */
            double n = Math.Ceiling((V - A) / (A - B));
            Console.WriteLine(n + 1);
        }
    }
}

순익분기점 문제와 유사하다. 차이라면 마지막에 다시 내려올 필요가 없음을 구별해야한다. 시간제한이 더욱 빡빡하기 때문에 무조건 수식을 통해 풀어야만 한다. 

마지막에 내려올 필요가 없기때문에 처음부터 빼고(V-A) 시작하면 좋다. 이 상태를 하루에 올라갈 수 있는 거리(A-B)로 나누면 된다.  ((V - A) / (A - B));

올림을 꼭 해주어야한다. 만약 문제가 5 1 6이 들어오면 V-A = 5 이고 A-B는 4다. 5/4를 나누면 1.XX 소수점이 나오는데 소수점의 의미는 달팽이가 한번에 올라갈 수 있는 거리를 적은 힘으로 올라갔다는 의미이다. 즉 소수점도 시도로 봐야한다. 따라서 올림을 해야한다.