- 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으로 배열의 합계를 구해서 리턴했다.