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

김예지·2021년 10월 11일
1

문제

https://programmers.co.kr/learn/courses/30/lessons/77884


문제 풀이

코드1

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

코드2

아주 신박한 코드가 있어서 가져왔다.
'제곱근이 정수이면, 약수의 개수가 홀수다'라는 원리를 사용한거라는데... 어떻게 이런걸 생각해내신건지...? 문과에겐 아주 어려운 수학세계💩

function solution(left, right) {
    let answer = 0;
    for (let i = left; i <= right; i++) {
        if (Number.isInteger(Math.sqrt(i))) {
            answer -= i;
        } else {
            answer += i;
        }
    }
    return answer;
}
profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 10월 25일

10/25
두번째 방법 익히기

답글 달기