약수의 개수와 덧셈

RyuIsangGo🤘·2023년 8월 21일
0

문제


나의코드

const numberOfDivisors = (x) => {
   return Array(x).fill(1).map((x, i) => x+i).filter((number) => x % number === 0).length;
}

const solution = (left, right) => {
    let answer = 0;
    for(let i =left; i<= right; i++) {
        numberOfDivisors(i) % 2 === 0 ? answer += i : answer -= i;
    }
    return answer;
}

로직흐름

numberOfDivisors 함수는 약수의 개수를 반환해주는 함수이다.
이 함수는 1부터 매개변수 x까지 배열을 만들고 각각의 요소에 1,2,3...,x로 채운 뒤, 이 배열을 순회하여 x의 약수인 것만 남기고 이 남은 요소의 개수를 반환하는 함수이다.

left부터 right까지 순회하여 numberOfDivisors를 호출하고 그 값이 짝수이면 더해주고 홀수라면 빼준다.

다른 풀이법도 있었는데,
정수의 제곱근이 정수라면, 약수의 개수가 홀수이다.
이것을 이용하면 시간 복잡도 측면에서 훨씬 좋은 코드가 나온다.

profile
이전 블로그 입니다.

0개의 댓글

관련 채용 정보