Link
문제 풀이 & 해설
풀이
function solution(n) {
let answer = 0;
const sqrt = Math.sqrt(n);
for (let i = 1; i < sqrt; i++) {
if (n % i === 0) answer += i + n / i;
}
if (n % sqrt === 0) answer += sqrt;
return answer;
}
간단 풀이 방법
1. 정수 n의 약수 구하기
2. 정수 n의 제곱근 고려
주의점
약수의 뜻
"어떤 수나 식을 나누어 나머지가 없이 떨어지는 수나 식을 일컫는 말"
if (n % sqrt === 0) answer += sqrt; // (1)
if (sqrt ** 2 === n) answer += sqrt; // (2)
두 조건문의 조건은 서로 다르다. 특히 `sqrt ** 2 === n`는 약수의 조건이 아니라 단순히 제곱근을 제곱한 것. 당연히 `n`이 나오겠지...
'알고리즘 > 문제' 카테고리의 다른 글
[프로그래머스 | Lv. 1 | JavaScript] 나머지가 1이 되는 수 찾기 (0) | 2024.12.22 |
---|---|
[프로그래머스 | Lv. 1 | JavaScript] x만큼 간격이 있는 n개의 숫자 (0) | 2024.12.22 |
[프로그래머스 | Lv. 1 | JavaScript] 평균 구하기 (0) | 2024.12.22 |
[프로그래머스 | Lv. 1 | JavaScript] 짝수와 홀수 (0) | 2024.12.22 |
[프로그래머스 | Lv. 1 | JavaScript] 자릿수 더하기 (0) | 2024.12.22 |
※ 쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있습니다.