본문 바로가기

알고리즘/프로그래머스 문제풀이

[프로그래머스 LEVEL1] 약수의 합 / Javascript

문제 설명

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

제한 사항

  • n은 0 이상 3000이하인 정수입니다.

입출력 예

n return
12 28
5 6

풀이 과정

시간 복잡도를 줄이기 위해 반복문 돌릴 때 n의 제곱근까지만 확인하도록 함

function solution(n) {
    let answer = 0;
    for(let i = 1; i <= Math.sqrt(n); i++) {
        if(n % i === 0) {
        	// i가 n의 제곱근일 때는 i 한번만 더하도록 함
            answer += i === Math.sqrt(n) ? i : i + (n / i);
        }
    }
    return answer;
}