문제 설명
정수 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;
}
'알고리즘 > 프로그래머스 문제풀이' 카테고리의 다른 글
[프로그래머스 LEVEL1] 자릿수 더하기 / Javascript (0) | 2022.02.06 |
---|---|
[프로그래머스 LEVEL1] 이상한 문자 만들기 / Javascript (0) | 2022.02.06 |
[프로그래머스 LEVEL1] 시저 암호 / Javascript (0) | 2022.02.06 |
[프로그래머스 LEVEL1] 문자열을 정수로 바꾸기 / Javascript (0) | 2022.02.06 |
[프로그래머스 LEVEL1] 수박수박수박수박수박수? / Javascript (0) | 2022.02.05 |