약수의 합
문제 링크
나의 풀이
def solution(n):
answer = 0
for i in range (1, n+1):
if n % i == 0:
answer+=i
return answer
- i가 1부터 n까지의 범위를 갖는 반복문을 사용하여 n을 i로 나누었을때 나머지가 0인 값들을 더하여 변수 answer에 할당하는 간단한 풀이법이다.
다른 사람의 풀이
def sumDivisor(num):
return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0])
- 이전의 글들에서 항상 말해왔듯이 한줄의 코드로 작성하는 연습도 지속적으로 해야하며, 이 답안의 핵심은 반복문의 범위를 1부터 (num//2)+1 로 했다는 것이다. 이 문제를 풀이할때 이 생각을 하긴 하였으나 적용하진 않았다. 하지만 input값이 매우 커지면 성능면에서 이 소스코드 답안이 훨씬 효율적일 것으로 생각된다.