자바스크립트 코딩테스트

프로그래머스 Level 1 - 약수의 개수와 덧셈 (Javascript)

준벨롭 2023. 11. 16. 19:58

문제

답안

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

후기

left와 right 사이의 값을 구한다.

그리고 그 값의 제곱근이 정수라면, 약수의 갯수가 홀수다.

예를들어 값이 16이라고 생각해보자.

(1,16),(2,8),(4,4)로 약수의 갯수가 5개이다.

값이 15라고 생각해보면

(1,15),(3,5)로 약수의 갯수 4개이다.

이와같이 같은값을 두번 곱해서 나온값의 수의 약수의 갯수는 홀수임을 알 수 있다.

 

i의 제곱근이 정수라면, i를 answer에서 빼주고, 정수가 아니라면 더해준다.

728x90