코딩 테스트/test_javaScript

[코딩테스트/javaScript] 약수의 개수와 덧셈 ⭐️⭐️

ijooha 2024. 12. 26. 02:07

function solution(left, right) {
    let num = [];
    let answer = 0;
    
    for (let i=left; i<=right; i++) {
        let measure = [];
        
        num.push(i);
        for (let j=0; j<=right; j++) {
            i%j==0 && measure.push(j);
        }
        (measure.length%2==0) ? answer += i : answer -= i;
    } return answer;
}

 

 

너무 구구절절 쓴 것 같아서 다른분들의 답을 봤는데 새로운 사실을 알았다.

 

어떤 수의 제곱근이 정수면, 약수가 홀수개라는 사실....

근데 생각해보면 당연하다 중간값이 제곱이 돼야하니까 홀수개일 수밖ㅇ...ㅔ

코드카타 풀면서 어쩌면 당연한 건데 인지하지 못했던 것들을 알게될 때마다 너무 좋다

그래서 제곱근을 알아내는 Math.sqrt(v) 함수와, 정수를 구분하는 Number.isInteger 함수를 함께 써주면 훠어어얼씬 간단한 답이 된다!

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