Programmers Practice/level 1

약수의 합 (with Python3)

Phlano 2020. 7. 22. 21:38

https://programmers.co.kr/learn/courses/30/lessons/12928

 

코딩테스트 연습 - 약수의 합

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수

programmers.co.kr

Logic

1. n의 약수는 n이 반드시 포함된다.

그리고 1 * n = 2 * (n / 2) = 3 * (n / 3) = ... 이런 식으로 n을 제외하면 n / 2가 가장 큰 약수가 될 수 있으므로 n의 절반 값까지만 약수인지 확인하면 된다.

ex) 14의 약수 = 14 , (14 / 2까지 확인 => 1,2,3,4,5,6,7 )

Code

1. answer에 n으로 미리 초기화시켜서 약수 n값을 반드시 포함 시킨다.그리고 range(1,n // 2 + 1)으로 1부터 n의 절반까지만 반복시켜 약수인지 확인해준다.

def solution(n):
    answer = n
    for i in range(1,n // 2 + 1):
        if n % i == 0: answer += i
    return answer