백준/단계별

백준 2869 C#) 달팽이는 올라가고 싶다

alpacadabra 2022. 5. 4. 01:30

간단한 일차부등식 문제이다.

 

int[] abv = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
int a = abv[0];
int b = abv[1];
int v = abv[2];

int day = (int)Math.Ceiling((double)(v - b) / (a - b));

Console.Write(day);

 

구하고자 하는 답을 x로 설정한다면 아래 식처럼 표현할 수 있다.

 

여기서 a, b, v는 문제에서 설명하였다.

 

이 문제의 포인트는 두 가지인데, 하나는 달팽이의 이동 거리가 (a - b) * x가 아니라는 점이다.

왜냐하면, 달팽이가 미끄러지는 횟수는 올라가는 횟수보다 항상 한 번이 적기 때문이다.

달팽이는 정상에 오르기 전까지는 계속 올라가고 미끄러지고를 반복하지만 한번 정상에 오르고나면 미끄러지지 않는다.

 

다른 하나는 일일이 반복문으로 풀 시간이 없다는 점이다.

시간 제한이 0.15초이므로 반복문이 아닌 수식으로 풀어야 시간 초과를 당하지 않을 것이다.

 

이에 주의하며 문제를 풀면 된다. 참고로 a - b는 0이나 음수가 될 수 없으므로 따로 체크하지 않아도 괜찮다.