나의 풀이
def solution(n):
answer = 0
for i in range(1,n+1) :
if n%i == 0 :
answer += i
return answer
1부터 n까지 돌면서, n 을 해당 숫자로 나누었을 때 나머지가 0 이라면 약수에 해당
다른 풀이
def sumDivisor(num):
return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0])
num / 2까지만 검사하여 성능을 2배로 올렸다.
그도 그럴 것이 num 이 100라고 생각해보자. 50 보다 큰 숫자는 100의 약수가 될 수 없으므로, 검사할 필요가 없다..!
조금 더 생각하는 능력을 키우자!!
'알고리즘 > 이것저것' 카테고리의 다른 글
[프로그래머스] 문자열을 정수로 바꾸기 - 파이썬(python) (0) | 2022.09.03 |
---|---|
[프로그래머스] 시저 암호 - 파이썬(python) (0) | 2022.09.03 |
[프로그래머스] 이상한 문자 만들기 - 파이썬(python) (0) | 2022.09.02 |
[프로그래머스] 자릿수 더하기 - 파이썬(python) (0) | 2022.09.02 |
[프로그래머스] 자연수 뒤집어 배열로 만들기 - 파이썬(python) (0) | 2022.09.02 |
댓글