반응형
문제:
두 정수 left와 right가 매개변수로 주어집니다.
left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.

 

문제 풀어보기: https://school.programmers.co.kr/learn/courses/30/lessons/77884?language=javascript

 

풀이보기
더보기
function solution(left, right) {
  let result = [];

  for (let i = left; i <= right; i++) {
    let count = 0;

    for (let j = 1; j <= Math.sqrt(i); j++) {
      if (i % j === 0) {
        count++;
        if (j !== i / j) {
          count++;
        }
      }
    }
    count % 2 === 0 ? result.push(i) : result.push(-i);
  }

  let sum = result.reduce((acc, curr) => acc + curr, 0);
  return sum;
}

일단 먼저 약수를 구해줬다. for 문을 약수의 개수를 구하고, 개수 별로 result에 해당 값을 push 해줬다.

짝수일 때는 그냥 push 해주면 되고, 홀수일 때는 -를 붙여서 push하면 된다.

이제 result 값에 reduce를 활용해서 값을 다 더해주면 끝!

반응형

+ Recent posts