Programmers - 약수의 개수와 덧셈

박요셉·2024년 5월 17일
0

Programmers.Js

목록 보기
11/26
post-custom-banner
function solution(left, right) {
    var answer = 0;
    
    for(let i = left; i <= right; i ++) {
        divisors = []
        for (let j = 1; j <= i; j++) {
            if(i % j === 0) divisors.push(j); 
        }
   
        divisors.length % 2 === 0 ? answer += i : answer -= i
    }
    
    return answer;
}

위는 본인의 풀이인데 아니 j <= i 부분에 Math.sqrt(i)라던지 i/2를 하면 왜 안되는건지 잘 모르겠음.
쨋든 아래는 다른 분이 푼건데 수학은 어렵다

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;
}

제곱근이 정수면, 약수의 갯수가 홀수다....
제곱근이 정수면, 약수의 갯수가 홀수다....
제곱근이 정수면, 약수의 갯수가 홀수다....
제곱근이 정수면, 약수의 갯수가 홀수다....

아래는 고심 끝에 sqrt 제곱근을 이용해 풀어낸 것이다.

function solution(left, right) {
   var answer = 0;
   
   for(let i = left; i <= right; i ++) {
       divisors = []
       console.log('i',i)
       for (let j = 1; j  <= Math.sqrt(i); j++) {
           if(i % j === 0) {
               divisors.push((j))
               divisors.push((i /j));
           }; 
       }
  
       const aa = new Set(divisors)
       aa.size % 2 === 0 ? answer += i : answer -= i
   }
   return answer;
}

profile
개발자 지망생
post-custom-banner

0개의 댓글