1Day 1Algorithm

[DAY 24] 약수의 합

walk_through_me 2019. 10. 25. 01:39

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

 

 

코딩테스트 연습 - 약수의 합 | 프로그래머스

자연수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 자연수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다. 입출력 예 #2 5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

programmers.co.kr

 

풀이

function solution(n) {
    if(n === 0) return 0;
    let numbers = [];
    for(let i = 0; i <= n; i++) {
        if(n % i === 0) numbers.push(i);
    }
    return numbers.reduce((acc, cur) => acc + cur);
}

1. n이 0인 경우 처리 → 0을 반환함 (숫자를 0으로 나누게되면 NaN이므로, 별도로 처리를 해줌)

2. 약수를 넣어줄 배열 numbers 생성

3. for문을 돌면서 나누어 떨어지는 수를 배열에 추가함

4. reduce()로 배열의 합계를 구해 반환함