문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
문제링크
풀이
쉽게 생각했을때, n의 약수라는건 n / 약수 = 0
이어야 한다! 1부터 n까지 반복해 더하면서 조건을 만족시키는 수만 더하면 된다 생각해서 반복문, 조건문을 같이 쓰기로 결정
def solution(n):
answer = 0 # 약수 합 저장
for i in range(1, n+1): # 1부터 n까지 반복
if n % i == 0: # n / i = 0 (약수조건)
answer += i # 값 더하기
return answer
다른사람 풀이
def sumDivisor(num):
# num / 2 의 수들만 검사하면 성능 약 2배 향상잼
return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0])
진짜 다른 사람 풀이 볼때마다 느끼는 거지만 똑똑한 사람들이 너무 많다😵💫