[프로그래머스] 약수의 합(JavaScript)

공지애·2022년 6월 22일
0

문제 설명

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

제한 사항

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

나의 풀이

function solution(n) {
    let answer = 0;
    for (let i=1; i<n+1; i++) {
        if (n%i === 0) {
            answer += i;
        }
    }
    return answer;
}

for문으로 간단하게 해결!

function solution(n) {
    let answer = [];
    for (let i=1; i<n+1; i++) {
        if (n%i === 0) {
            answer.push(i)
        }
    }
    return answer.reduce((a,c) => a+c, 0);
}

사실 처음에 배열을 만든 다음에 배열 안의 값을 다 더해주려고 했었는데 테스트 중 런타임 에러가 나왔었다. 왜 그런지 찾아봤더니 reduce는 빈 배열일 때 호출하면 에러가 나와서 initialValue를 꼭 설정해줘야 한다. 런타임 에러가 나왔던 테스트는 정수 n이 0이었던 거 같다.

0개의 댓글