[프로그래머스] 약수 구하기


문제 설명

정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.


제한사항

• 1 ≤ n ≤ 10,000


입출력 예

nresult
24[1, 2, 3, 4, 6, 8, 12, 24]
29[1, 29]

입출력 예 설명

입출력 예 #1

  • 24의 약수를 오름차순으로 담은 배열 [1, 2, 3, 4, 6, 8, 12, 24]를 return합니다.

입출력 예 #2

  • 29의 약수를 오름차순으로 담은 배열 [1, 29]를 return합니다.

나의 풀이

function solution(n) {
  let result = [];
  for (let i = 1; i <= n; i++) {
    if (n % i === 0) result.push(i);
  }
  return result;
}

나의 두번째 풀이(Code Refactoring)

function solution(n) {
  let result = [];
  let divisor = 1;
  while (divisor <= n) {
    if (n % divisor === 0) {
      result.push(divisor);
    }
    divisor++;
  }
  return result;
}

// result를 결과값의 빈배열 추가
// divisor은 약수
// 약수는 인수 만큼 카운트하고 인수로 나누었을때 0이 되는 것들이 약수이다

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

function solution(n) {
  return new Array(n)
    .fill(1)
    .map((v, i) => v + i)
    .filter((elem) => !(n % elem));
}

// Array fill로 푸는 방법