개발자로 전향중

[프로그래머스] 약수의 개수와 덧셈 본문

자료구조&알고리즘

[프로그래머스] 약수의 개수와 덧셈

hovinee 2024. 9. 30. 18:14

문제 설명

 

문제 풀이

function solution(left, right) {
    var answer = 0;
    for (let i = left; i <= right; i++) {
        let arr = []
     
        for (let j = 0; j <= i; j++) {
            if(i % j === 0) {
                arr.push(j)
            }
        }
        
        if(arr.length % 2 === 0) {
            answer += i
        } else {
            answer -= i
        }
    }
   
    return answer;
}

하지만 시작 복잡도가 O의 n제곱

 

더 나은 풀이

function solution(left, right) {
    let answer = 0;
    
    for (let i = left; i <= right; i++) {
        // i가 완전 제곱수인지 확인
        if (Number.isInteger(Math.sqrt(i))) {
            answer -= i;  // 약수의 개수가 홀수인 경우
        } else {
            answer += i;  // 약수의 개수가 짝수인 경우
        }
    }
    
    return answer;
}

시간 복잡도 O의 n