Codility Lesson 3 - FrogJmp

문제 설명

작은 개구리가 길 반대편으로 가고 싶어 합니다. 개구리는 현재 X 위치에 있으며 Y보다 크거나 같은 위치로 이동하려고 합니다. 작은 개구리는 항상 고정된 거리인 D를 점프합니다.

작은 개구리가 목표에 도달하기 위해 점프해야 하는 최소한의 횟수를 세십시오.

함수를 작성합니다:

function solution(X, Y, D);

세 개의 정수 X, Y, D가 주어졌을 때 X 위치에서 Y보다 큰 위치로 이동하는 최소 점프 횟수를 반환하는 함수를 작성합니다.

예를 들어, 주어진

X = 10
Y = 85
D = 30

이면 개구리의 위치는 다음과 같으므로 함수는 3을 반환해야 합니다:

  • 첫 번째 점프 후, 위치 10 + 30 = 40에서
  • 두 번째 점프 후, 위치 10 + 30 + 30 + 30 = 70
  • 세 번째 점프 후, 위치 10 + 30 + 30 + 30 = 100에 위치합니다.

다음 가정에 대한 효율적인 알고리즘을 작성하십시오

  • X, Y, D는 [1..1,000,000,000] 범위 내의 정수입니다;
  • X ≤ Y.

문제 접근

총 이동 해야할 최소 거리를 구하여 해당 최소 거리를 D 로 나누게 된다면 최소한 점프수를 구할 수 있다.

  1. 총 이동 해야할 최소 거리를 구한다. (Y - X)
  2. 해당 최소 거리를 D로 나누고 몫을 올림 처리 하면 점프수가 나온다.

    • 나머지 즉 몫이 소수점이 나오면 점프가 더 필요하다는 뜻이므로 소수점을 올림한다.
function solution(X, Y, D) {
  const distance = Y - X
  const count = Math.ceil(distance / D)

  return count
}