프로그래머스 Lv1. 약수의 개수와 덧셈

용상윤·2021년 5월 17일
0

문제

월간 코드 챌린지 시즌2
https://programmers.co.kr/learn/courses/30/lessons/77884


접근

숫자를 1부터 그 숫자의 제곱근까지 나눴을 때, 나누어 떨어지면 약수다.


코드

js

function solution(left, right) {
    function measure(number) {
        let nums = [];
        const c = Math.sqrt(number);
        for(var i=1; i<c; i++){
            if(number % i == 0){
                nums.push( i );
                nums.push( number / i )
            }
        }
        if(number % c == 0){
            nums.push( c )
        }
        
        return nums.length;
    }
    let result = 0;
    for(var num = left; num<=right; num++){
        let r = measure(num);
        r%2==0 ? result+=num : result-=num;
    }
    return result
}

python

def solution(left, right):
    def measure(number) :
        nums = []
        c = int(number ** 0.5)
        for i in range(1, c+1) :
            if number % i == 0 :
                if i == number//i :
                    nums.append(i)
                else :
                    nums.append(i)
                    nums.append(number//i)
        
        return len(nums)
    
    result = 0
    for num in range(left, right+1) :
        r = measure(num)
        if r % 2 == 0 :
            result += num
        else :
            result -= num
    
    return result
    

profile
달리는 중!

0개의 댓글