2020. 4. 27. 22:59

[python](프로그래머스)약수의 합

문제 설명


정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

 

제한 사항


  • n은 0 이상 3000이하인 정수입니다.

 

문제 풀이


def solution(n):
    return sum([i for i in range(1, n+1) if n % i == 0])

1부터 n까지 나머지가 남지 않고 딱떨어지는 숫자들 리스트들을 다 더한 값을 리턴한다.

 

다른 풀이


def sumDivisor(num):
    # num / 2 의 수들만 검사하면 성능 약 2배 향상잼
    return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0])

어차피 반 넘은 값은 계산할 필요없고 바로 자신의 숫자만 더해준다.