문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한 사항
- n은 0 이상 3000이하인 정수
입출력 예
n | return |
12 | 28 |
5 | 6 |
내 풀이
0부터 정수 n 까지 반복하여 n을 i로 나눈 나머지가 0과 같은 (약수) list1 생성
sum을 통해 합한 값 return
def solution(n):
list1 = [i for i in range(1,n+1) if n % i == 0]
return sum(list1)
다른 사람 풀이
절반만 검사하여 성능 향상
1부터 num을 2로 나눈 값+1 까지 반복하며 num을 i로 나눈 값이 0과 같은(약수) 리스트 생성하여 sum
약수는 정수 자신을 포함하므로 sum값에 정수 num 값을 합함
def sumDivisor(num):
# num / 2 의 수들만 검사하면 성능 약 2배 향상
return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0])
728x90
'코딩테스트' 카테고리의 다른 글
[프로그래머스/파이썬] 자연수 뒤집어 배열로 만들기 (0) | 2022.09.18 |
---|---|
[프로그래머스/파이썬] 정수 제곱근 판별 (0) | 2022.09.17 |
[프로그래머스/파이썬] 평균 구하기 (0) | 2022.09.17 |
[프로그래머스/파이썬] 자릿수 더하기 (0) | 2022.09.17 |
[프로그래머스/파이썬] 짝수와 홀수 (0) | 2022.09.17 |