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


문제 설명

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


제한사항

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


입출력 예

nreturn
1228
56

입출력 예 설명

입출력 예 #1

  • 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.

입출력 예 #2

  • 5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

나의 풀이

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

나의 두번째 풀이(Code Refactoring)

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

// 이 방법이 가장 효율적인 듯하다

참고 할 만한 다른 사람의 코드

function solution(n) {
  let answer = 0;
  let index = 0;
  while (index++ < n) {
    if (n % index === 0) {
      answer += index;
    }
  }

  return answer;
}
// while문으로 푸는 방법도 있다