프로그래머스Lv1 - 약수의 개수와 덧셈

요리하는코더·2021년 8월 10일
0

알고리즘 - 문제

목록 보기
10/48
post-thumbnail

코드

function solution(left, right) {
    var answer = 0;
    
    for(let i=left;i<=right;i++) {
        let count = 2; // 1과 자신은 무조건 약수
        if(i===1) count = 1;
        
        for(let j=2;j<=Math.sqrt(i);j++) {
            if(i%j == 0)
            {
                if(j== Math.sqrt(i))
                    count+=1;
                else count+=2;
            }
        }
        if(count % 2 == 0) answer+=i;
        else answer-=i;
    }
    return answer;
}

풀이 및 소감

약수를 구할 때 For문을 다 도는 게 아닌 제곱 수가 아닐 때 약수는 두 수의 곱이라는 성질을 이용해 풀었다. 예를들어 16이면 2 * 8 이런식으로 나온다는 뜻! 그래서 루트를 씌운 값까지 for문을 돌면서 개수를 세려주었다. 가장 인기가 많은 답을 보니 제곱근이 정수면 약수의 개수가 홀수, 아니면 짝수라는 것을 생각했던데 대단한 거 같다...!

profile
요리 좋아하는 코린이

0개의 댓글