[알고리즘 문제풀이] 약수의 개수와 덧셈

😎·2022년 11월 23일
0

알고리즘 문제풀이

목록 보기
27/27

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

제한사항
1 ≤ left ≤ right ≤ 1,000
입출력 예
left right result
13 17 43
24 27 52

내가 작성한 코드

function solution(l,r) {
   let result =[];
   for(let i=l; i<=r; i++){
      result.push(i);
   }
   let numbers = result.filter(function(value){
      let count =0;
      for(let i=1; i<=value; i++){
         if(value%i==0){
            count++;
         }
      }
      if(count%2==0){
         return  true;
      }else{
         return false;
      }
   })
   result = result.filter((value)=> !numbers.includes(value));
   return numbers.reduce((a,b) => a+b) - result.reduce((a,b) => a+b);
}

문제해설
전달받은 l부터 r 까지의 수로 이루어진 배열 result를 구한다음
해당 배열에서 약수의 개수가 짝수인 수들만 numbers 배열에 넣고
result배열에 속하지만 numbers배열에는 속하지않는 요소의 값들을 result에 재할당 한다
이후 각배열의 총합을 구하여
(numbers 배열의 총합 - result배열의 총합) 을반환하는 함수

profile
개발 블로그

0개의 댓글