[프로그래머스] 약수의 개수와 덧셈 (JS)

hhkim·2023년 6월 22일
0

Algorithm - JavaScript

목록 보기
24/188
post-thumbnail

풀이 과정

  1. 약수의 개수 구하기: n1부터 n까지로 나누어 떨어지는 수의 개수
  2. left부터 right까지의 수: Array(right - left + 1).fill(left).map()
  3. 2의 요소를 하나씩 보면서 조건을 확인해서 합계 구하기: reduce()

코드

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

function solution(left, right) {
  return Array(right - left + 1)
    .fill(left)
    .map((n, i) => n + i)
    .reduce((result, n) => result + (countDevisor(n) % 2 ? -n : n), 0);
}

🤔

다른 사람 풀이 과정들을 보니 보통 이중 반복문을 돌려서 푸는 듯하다.
해보니 속도는 비슷한 것 같은데 내 경우에는 배열 객체를 만들어서 풀기 때문에 공간 복잡도가 좀더 높아지는 듯..?
배열 함수를 쓰는 데 익숙해져서 단순하게 풀 생각을 못했다.

0개의 댓글