코딩 테스트/Codility

Codility FrogJmp JavaScript 풀이

K1MY0UNGHAN 2020. 3. 29. 01:40

https://app.codility.com/programmers/lessons/3-time_complexity/frog_jmp/

 

FrogJmp coding task - Learn to Code - Codility

Count minimal number of jumps from position X to Y.

app.codility.com

방정식으로 생각하면 참 쉬운 수학 문제인데, 코드로 구현하려니 복잡하게 생각하게 된다.

 

내가 처음에 제출한 코드는 아래와 같다.

function solution(X, Y, D) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result;
    for (result = 0; X + (D*result) < Y ; result++) {
    }
    return result;
}

이러면 테스트 케이스는 통과할 수 있으나 반복문으로 인해 숫자가 커지면 성능이 떨어진다.

 

생각해보니, 반복문을 쓸 필요가 없었다.

function solution(X, Y, D) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result;
    result = ((Y-X) % D > 0) ? Math.ceil((Y-X) / D) : ((Y-X) / D);
    return result;
}

이렇게 나머지 연산을 하면 된다.

 

조건문에 대해 설명하자면

나머지가 0 이상일 때와 0일 때, 두 가지 경우만 고려하면 되므로

나머지가 0 이상일 때는 ceil function으로 원래 나머지 값보다 1을 더해주면 된다.