알고리즘/프로그래머스 문제풀이
[프로그래머스 LEVEL1] 약수의 합 / Javascript
렌더
2022. 2. 6. 21:26
문제 설명
정수 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;
}