문제 풀기/JavaScripts

문제 14. 악수의 합(Math.sqrt())

kagan-draca 2024. 7. 11. 19:16

 

단순하게 반복문에서 i를 1부터 n까지 i++ 하면서 n % i == 0인지 확인하고, 더해주면 쉽게

풀 수 있지만 그러면 반복문의 효율성이 떨어진다 생각해 수학의 ROOT를 사용하기로 결정했다.

찾아 본 결과 Math.sqrt()로 Root값을 구할 수 있었고, 그 결과 반복 횟수를 O(Root(N))만큼

줄일 수 있었다.

 

제출한 코드 : 

 

function solution(n) {
    let answer = 0;
    for(let i = 1; i <= parseInt(Math.sqrt(n)); i++)
    {
        if(n % i == 0)
        {
            answer += i;
            if (i !== n / i) 
            {
                answer += n / i;
            }
        }
    }
    return answer;
}