Programmers

[Programmers] 약수의 합 - level 1

김철현 2022. 9. 28. 00:08

문제 설명

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


제한사항

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

입출력 예시

n return
12 28
5 6

나의 풀이

전형적인 약수를 구하는 문제이다.

약수를 구하는 문제는 항상 시간초과에 대비하여 그 수의 제곱근까지만 계산하도록 하자.

def solution(n):
    answer = 0

    for i in range(1, int(n ** 0.5) + 1):
        if n % i != 0:
            continue

        answer += i if i == n // i else sum([i, n // i])

    return answer