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
반응형
'코딩테스트 > Programmers' 카테고리의 다른 글
[Programmers/프로그래머스]자연수 뒤집어 배열로 만들기 (0) | 2022.09.26 |
---|---|
[Programmers/프로그래머스]정수의 제곱근 판별 (0) | 2022.09.26 |
[Programmers/프로그래머스]자리수 더하기 (0) | 2022.09.26 |
[Programmers/프로그래머스]평균 구하기 (0) | 2022.09.26 |
[Programmers/프로그래머스]짝수 홀수 (0) | 2022.09.26 |