본문 바로가기
알고리즘/프로그래머스

[프로그래머스][자바스크립트][Level1] 약수의 개수와 덧셈

by Benjamin_Choi 2022. 1. 9.

풀이

/**
 * 약수의개수와덧셈.js
 * Level1
 * https://programmers.co.kr/learn/courses/30/lessons/77884
 */

 function solution(left, right) {
    var answer = 0;
    
    for (let i = left; i <= right; i++) {
        let yaksuNum = 0;
        for (let j = 1; j <= i; j++) {
            if (i % j === 0) yaksuNum++;
        }
        yaksuNum % 2 === 1 ? answer -= i : answer += i;
    }
    
    return answer;
}

약수를 모두 확인해서 약수의 개수가 홀/짝 인 경우를 나눠서 빼고 더해주는 방식이다. 

 

다른 사람 풀이 참고

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

제곱근을 활용해서, 제곱근이 약수로 존재하는 경우에만 약수의 개수가 홀수임을 이용해서 처리하는 방식을 모든 약수를 확인할 필요가 없어 더 효율적이다.

 

 

 

댓글