본문 바로가기
알고리즘/백준 BOJ

[ BOJ/C# ] 2869 달팽이는 올라가고 싶다

by 왹져박사 2023. 9. 1.

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

 

2869번: 달팽이는 올라가고 싶다

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

www.acmicpc.net

어렸을때 봤던 코믹 메이플스토리가 생각나는 문제였다. 

그냥 반복문으로 풀수도 있는 문제지만, 시간 제한이 있었기 때문에 규칙을 찾아 풀었다. 

1) A - B == 1 이라면, V - B일이 걸렸다. (예제3)

2) V - A == 1이라면, 2일이 걸린다. 

3) 나머지 경우에는 V에 마지막에 하루 최대(미끄러지지 않는 날)로 올라갈수 있는 A일을 빼고,

(A - B)를 나누고 (미끄러진 날), 나머지가 있다면 하루를 더 더해준다. 

using System;

namespace _2869
{
    class Program
    {
        static void Main()
        {
            StreamReader sr = new StreamReader(Console.OpenStandardInput());
            StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());

            string[] str = sr.ReadLine().Split(' ');
            int a = int.Parse(str[0]);
            int b = int.Parse(str[1]);
            int v = int.Parse(str[2]);
            int day = 0;

            if (a - b == 1) day = v - b;
            else if (v - a == 1) day = 2;
            else
            {
                v -= a;
                day++;
                while (v > 0)
                {
                    day += v / (a - b);
                    v = v % (a - b);
                    if (v != 0)
                    {
                        v = 0;
                        day++;
                    }
                }
            }
            sw.WriteLine(day);

            sr.Close();
            sw.Flush();
            sw.Close();
        }
    }
}

'알고리즘 > 백준 BOJ' 카테고리의 다른 글

[ BOJ/C# ] 1676 팩토리얼 0의 개수  (0) 2023.09.03
[ BOJ/C# ] 1546 평균  (0) 2023.09.01
[ BOJ/C# ] 10989 수 정렬하기 3  (0) 2023.08.30
[ BOJ/C# ] 21921 블로그  (0) 2023.08.29
[ BOJ/C# ] 1940 주몽  (0) 2023.08.28