본문 바로가기

코딩테스트/Programmers

[Programmers/프로그래머스]약수의 합

728x90
반응형

문제 설명

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

제한 사항
  • n은 0 이상 3000이하인 정수입니다.
입출력 예
n return
12 28
5 6
입출력 예 설명

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

입출력 예 #2
5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

풀이

이 문제는 n의 약수를 구하는 공식으로 n의 약수를 전부 구하여 더하면 되는 문제이다.

먼저 1~n까지의 수 중 약수를 구한다. n의 약수를 판별하는 방법은 n을 해당 수로 mod 연산했을 때 0이나 오면 약수이다. 

리스트 컴프리헨션은 파이썬 속도에 최적화되어 있기 때문에 일반 반복문을 사용하여 리스트에 값을 삽입하는 것보다 빠르므로 리스트 컴프리헨션을 사용하는 것을 추천한다. 

약수들을 모두 구해서 리스트에 넣었다면 sum()  함수를 통해 리스트의 값들을 전부 더한 후 반환하면 된다.

def solution(n):
    return sum([i for i in range(1,n+1) if n%i==0])
728x90
반응형