Skip to content

Latest commit

 

History

History
29 lines (20 loc) · 1.14 KB

File metadata and controls

29 lines (20 loc) · 1.14 KB

function solution(A, B, K) {
    // write your code in JavaScript (Node.js 8.9.4)
    let start
    if(A % K == 0){
        start = parseInt(A / K)
    }
    else{
        start = parseInt(A / K) + 1
    }
    const end = parseInt(B / K)
    return end-start+1
}

A이상 B 이하에서 K로 나누어 떨어지는 수의 개수를 구하는 문제였다. A와 B 사이가 최대 20억이 될 수 있기 때문에 반드시 O(1)의 시간복잡도를 가져야 했다.

때문에 일반적인 접근과는 조금 다른 접근이 필요했고 A를 K로 나눈 값과 B를 K로 나눈 값 사이의 개수를 구해서 반환하면 된다는 것을 알게 되었다.

하지만, 여기서 주의해야 할 것이 end의 경우에는 문제가 되지 않지만 start의 경우 나눗셈의 결과가 실수가 되는 경우 결과값이 조금 달라진다는 것이다. start가 나누어 떨어질 때는 start가 포함될 수 있지만 start가 나누어떨어지지 못하고 실수가 되는 경우에는 start를 포함할 수 없다.