코딩 테스트/프로그래머스 level1

약수의 개수와 덧셈

fullfish 2022. 9. 6. 18:33

코드

function solution(left, right) {
  let result = 0;
  for (let i = left; i <= right; i++) {
    findDivisors(i) % 2 === 0 ? (result += i) : (result -= i);
  }
  return result;
}

function findDivisors(n) {
  const divisors = [];
  for (let i = 1; i <= Math.sqrt(n); i++) {
    if (n % i === 0) {
      divisors.push(i);
      if (n / i != i) divisors.push(n / i);
    }
  }
  return divisors.length;
}

약수를 구하는 함수 findDivisors를 선언하고

이 함수를 이용해서 약수의 갯수를 구했다

 

더 좋은 코드

function solution(left, right) {
    var answer = 0;
    for (let i = left; i <= right; i++) {
        if (Number.isInteger(Math.sqrt(i))) {
            answer -= i;
        } else {
            answer += i;
        }
    }
    return answer;
}
제곱근이 정수면 약수의 갯수가 홀수라는 사실 이용