규도자 개발 블로그

[프로그래머스/Level1/파이썬3(python3)] 약수의 합 본문

알고리즘/풀이

[프로그래머스/Level1/파이썬3(python3)] 약수의 합

규도자 (gyudoza) 2020. 4. 12. 19:29

[프로그래머스/Level1/파이썬3(python3)] 약수의 합

문제

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

제한사항

  • n은 0 이상 3000이하인 정수입니다.

입출력 예

nreturn
1228
56

입출력 예 설명

입출력 예 #1

12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.

입출력 예 #2

5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

풀이

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

설명

코드의 흐름은 다음과 같다. range(1, n + 1)을 통해 n까지의 숫자를 배열로 반환받고 여기에서 (n % x == 0)이라는 조건식을 이용해 약수를 판별한다. 해당 과정은 컴프리헨션으로 진행하였으므로 list형대로 반환되는데 정수로만 이뤄진 이터레이블한 자료형은 요소의 모든 합을 반환해주는 sum이라는 함수사용이 가능하다. 그렇게 모든 약수의 합이 더해진 값을 구할 수 있다.

Comments