Skip to content

Latest commit

 

History

History
30 lines (23 loc) · 1.08 KB

풀이_약수의합.md

File metadata and controls

30 lines (23 loc) · 1.08 KB

🐠 프로그래머스 약수의 합

  • Date : 2021.03.28(일)
  • Time : 10분

문제

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

제한 사항

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

코드 풀이

def solution(n):
    divisorsList = []

    for i in range(1, int(n ** (1 / 2)) + 1):
        if (n % i == 0):
            divisorsList.append(i)
            if ((i ** 2) != n):
                divisorsList.append(n // i)

    return sum(divisorsList)

: N = A * B 로 나타낼 수 있다는 것을 이용했다. 항상 약수를 구하면 그 짝이 되는 수가 존재한다. ex. 6 = 2 * 3 . for 문을 이용해 자연수 N의 제곱근까지의 약수를 구하면 그 짝이 되는 약수는 자동으로 구할 수 있다. N = A * B 일 때, A == B 일 수 있기 때문에 (ex. 25 = 5 * 5 ) 값을 중복해서 넣어주지 않기 위해 if 문으로 제곱했을 때 n이 되지 않는지 검사를 해준다. sum으로 배열의 합계를 구해서 리턴했다.