Lv.1 : 약수의 개수와 덧셈 [JavaScript]

2022. 9. 27. 21:17Algorithm/프로그래머스

반응형

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 풀이 1

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

 

 

약수의 갯수를 저장할 cnt를 만들고 약수가 있을때마다 cnt++

약수 갯수가 짝수이면 answer에 i를 더하고, 홀수이면 answer에서 i를 뺀다

문제 풀이 2

function solution(left, right) {
    var answer = 0;
    for(var i=left; i<=right; i++){
        Number.isInteger(Math.sqrt(i)) ? answer-=i : answer+=i;
    }

    return answer;
}

제곱근이 정수라면 약수의 개수가 홀수이고, 정수가 아니라면 짝수라는 사실을 활용한다.

 

Math.sqrt(i) :i의 제곱근을 리턴

Number.isInteger(n) : n이 정수면 true, 아니면 false 리턴

 

 

 

 

세상엔 똑똑한 사람들이 많군,,, 수학도 잘해야하는것인가,,

 

반응형