자료구조 및 알고리즘/JavaScript Practice

JS Practice) 프로그래머스 Lv.1 : 약수의 개수와 덧셈

Ryomi 2023. 6. 15. 08:34
728x90
반응형

 

약수의 개수와 덧셈

문제설명 :

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

 

제한 사항

  • 1 ≤ left  right ≤ 1,000

 

입출력 예

left right
Return
13 17 43
24 27 52

 

접근

: left부터 right까지 각 수의 약수의 개수를 구한 후, 약수의 개수가 짝수이면 answer 에 더해주고, 그렇지 않으면 빼주었다.

function solution(left, right) {
    let answer = 0
    let num = left
    while(num <= right){
        let count = 0
        for(let i = 1; i <= num; i++){
            if(num % i === 0) count++
        }
        answer += count % 2 === 0 ? num : num * -1
        num++
    }
    return answer
}

 

 

solution

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

// Math.squrt(num)이 정수이면 약수의 개수는 홀수이다.

// 약수를 구할 때, Math.squrt()를 쓴다는게 자꾸 기억이 안난다... 자주 보자.

728x90
반응형