[JS] 프로그래머스 - 약수의 합 구하기

Updated:

문제

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

제한 사항 n은 0 이상 3000이하인 정수입니다.

나의 풀이

function solution(n) {
    var answer = 0;


    for (var i = 1; i <= n; i++) {
        if (n % i === 0) {
            answer += i;
        }
    }
    // 2,3,4,6 
    return answer;
}

test('약수의 합 구하기', () => {
    //expect(solution("12")).toBe(28);
    expect(solution("5")).toBe(6);
})


일단 약수의 개수를 구해서 하는건가 싶어서 갯수로 해봣는데 계속 실패하였다 그래서 살짝 힌트를 봤더니 들어온값에 나머지가 0 이면 약수라는것을 알았다. 아직 사고방식이 많이부족한것같다. 좀더 생각하는 방식을 기르자!

다른 사람의 풀이 1


function sumDivisor(num) {
    //1과 자기 자신을 약수로 가진다.
    var answer = 1 + num;

    for (let i = 2; i < num; i++) {
        if (num % i == 0)
            answer += i
    }

    return answer;
}

console.log(sumDivisor(12));

다른 사람의 풀이 2

 
let sumDivisor = num => {

    let answer = 0,
        i = 1,
        j = num % 2 == 0 ? 1 : 2

    for (i; i < num; i = i + j) if (num % i == 0) answer += i

    return answer + num
}

console.log(sumDivisor(12));

Tags:

Categories:

Updated:

Leave a comment