알고리즘/프로그래머스 - JS

[프로그래머스-JS] level.1 약수의 개수와 덧셈

개발자성장기 2022. 7. 14. 17:32
반응형

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

 

프로그래머스

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

programmers.co.kr

 

 

 

나의 코드 

 

 

function solution(left, right) {
    let count = 0
    box=[]
    for( i=left; i <=right ; i++){
        for(k=1; k<=i; k++){
           if(i % k == 0){
              count += 1;
           }
        }
        box.push([i,count])
        count = 0
    }
    const result = box.reduce((acc, cur)=> {
        if(cur[1] % 2 === 0 ){
            acc = acc + cur[0]
        }else{
            acc = acc - cur[0]
        }
        return acc 
    },0)
    return result;
}

 

배열안에  left 부터 right 까지 숫자의 약수의 갯수를 넣어주고

 

기 배열을 reduce를 통해서 짝수인지 홀수인지 구분한다음  더하거나 빼는 값을 return하도록 함 

 

 

다른 사람 풀이 

 

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

 

 

와 놀랐다 굉장히 쉽게 푸셨다.

 

 

제곱근이 정수이면 약수의 갯수가 홀수이다 

 

Number.isInteger()

이 메서드는 값이 정수인지 판별하는 메서드이다.

반환값은 Boolean이다.

 

 

반응형