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

·2022년 12월 14일
0

코테문제풀기

목록 보기
52/57
const input1 = {
  left: 13,
  right: 17,
  result: 43,
};

const input2 = {
  left: 24,
  right: 27,
  result: 52,
};

const { left, right, result } = input1;

function solution(left, right) {
  const factorCount = [];

  for (let i = left; i <= right; i++) {
    const factors = [];
    const sqrt = Math.sqrt(i);

    for (let j = 1; j <= sqrt; j++) {
      if (i % j === 0) {
        factors.push(j);
        if (Math.floor(i / j) === j) continue;
        factors.push(i / j);
      }
    }
    factorCount.push([i, factors.length]);
  }

  return factorCount.reduce((answer, [num, count]) => {
    if (count % 2 === 0) {
      return answer + num;
    }
    return answer - num;
  }, 0);
}

const answer = solution(left, right);
console.log(answer, answer == result);

0개의 댓글