백준 2869 달팽이는 올라가고 싶다 JAVA

sundays·2024년 5월 23일
0

문제

달팽이는 올라가고 싶다

풀이

이문제 또한 수학문제였다.
처음엔 이런식으로 구했으나 시간초과가 났다

int current = 0;
int count = 0;
while (current < v) {
   current += a;
   count++;
   if (current == v) { break; }
   current -= b;
}

질문하기 게시판에 가보면서 알게되었는데, 역시나 그냥 수학 문제 였다. 해석은 다음과 같다.

(v - b - 1) / (a - b) + 1

올라가야 할 거리는 v - b 로 나타내는데 하루에 갈수있는거리는 a - b 이다.
이 식으로 구하면 v - b / a - b 인데 이 식이 나머지가 있을 경우 하루 더 가야하기 때문에 + 1 을 해준다. 나머지 판별식 보다는 분자에 -1 을 해주어 애초에 나누어 떨어질수 없게 구현해준뒤 +1 을 무조건 해주는 식으로 구현하면 되겠다.[참고]

전체 코드

전체 코드

profile
develop life

0개의 댓글