본문으로 바로가기

문제: 자연수 n 을 입력받고 그 n 의 약수를 모두 더한 값을 리턴 (프로그래머스)


n

 return

12

28 ( 1 + 2 + 3 + 4 + 6 + 12)



■ range 의 범위를 1부터 n+1 까지 for loop 문을 실행하여, n 의 나머지가 0일 때(true) answer += i

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


■ 리스트 컴프리헨션과 sum 함수를 사용하여 구현

def solutions(n):
    return sum([i for i in range(1, n+1) if n % i == 0])



■ 최종 answer 값에 n 을 넣어두고, n 의 몫을 구해서 범위를 반으로 줄여냄

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


■ 리스트 컴프리헨션 버전

def soution(n):
    return n + sum([i for i in range(1, (n // 2)) if n % 1 == 0])