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

https://school.programmers.co.kr/learn/courses/30/lessons/12928

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


코드 1

function solution(n){
    let a = [];
    for(let i = 1; i <= n; i++){
        if (n % i === 0) a.push(i);  // i가 n의 약수라면 배열에 추가
    }
    return a.reduce((acc, num) => acc + num, 0);
}
  • 먼저 빈 배열 a를 만든다.
  • 1부터 n까지 숫자를 순회하면서 삼항연산자를 사용하여 n % i === 0 이면 약수이므로 배열에 넣고, 아니면 push()로 추가해준다.
  • 배열에 모든 약수가 모이면 reduce()를 사용해 약수들의 총 합을 구한다.

굳이 배열을 쓴거같아서 바로 누적하는 코드로 짜보았다.

코드 2

function solution(n){
    let sum = 0;
    for(let i = 1; i <= n; i++){
        if (n % i === 0) sum += i; // 약수면 바로 누적
    }
    return sum;
}

 

  • 값을 누적시킬 sum을 0으로 초기화한다.
  • 1부터 n까지 순회하면서 약수라면 sum에 바로 더해준다. 

+ Recent posts