본문 바로가기

코딩테스트

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

반응형

문제

프로그래머스

 

코딩테스트 연습 - 약수의 개수와 덧셈

두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주

programmers.co.kr

나의 풀이

function solution(left, right) {
    var answer = 0;

    let diff = right - left;

    function judge(num){
        let cnt = 0;
        for(let i = 0 ; i<= num ;i++){
            if (num % i == 0) cnt++
        }
        return cnt%2 == 0 ? true : false
    }

    for(let i = 0 ; i <= diff;i++){
        let result = judge(left)
        if(result){
            answer += left   
        }else{
            answer -= left
        }
        left++
    }        
    return answer;
}

 

약수의 갯수가 짝수면 true, 홀수면 false를 반환하는 judge 함수를 만들었고, left와 right의 차이만큼 for문을 돌리면서
answer에 덧셈과 뺄셈을 해주었다.

다른이의 풀이

  1. 함수를 만들지 않고 for문을 두번 돌려서 한번에 계산할 수 있다.
  2. 제곱근이 정수면 약수의 갯수가 홀수랍니다. //Number.isInteger() 메서드는 주어진 값이 정수인지 판별합니다.
반응형