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