OLD/Coding Test
[프로그래머스] level 1 : 약수의 합
stranger95
2020. 2. 6. 21:25
문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한 사항
- n은 0 이상 3000이하인 정수입니다.
입출력 예
n | return |
12 | 28 |
5 | 6 |
Solution
1
2
|
def solution(n):
return sum(list(filter(lambda x: n % x == 0, range(1, n+1))))
|
cs |
코드해석
정수 n을 1부터 n까지의 정수로 나누고, 나머지가 0인 경우만 리스트에 원소로 넣어준 후 이들의 합을 구합니다. sum 함수를 사용하면 리스트 내 원소들의 합을 쉽게 구할 수 있답니다.
>>> sum([1,2,3])
6
다른 사람의 풀이
1
2
|
def solution(n):
return n + sum([i for i in range(1, (n//2) + 1) if n % i == 0])
|
cs |
sum 안에 list를 바로 넣고 if 조건문을 연산합니다. n을 2로 나눈 몫까지만 연산하기 때문에 확실히 시간이 절약되네요.