EXCELSIOR

[Level 1] 약수의 합 (sumDivisor) 본문

Python/알고리즘_문제

[Level 1] 약수의 합 (sumDivisor)

Excelsior-JH 2016. 11. 14. 21:42

1. 문제

어떤 수를 입력받아 그 수의 약수를 모두 더한 수 sumDivisor 함수를 완성해 보세요. 

예를 들어 12가 입력된다면 12의 약수는 [1, 2, 3, 4, 6, 12]가 되고, 총 합은 28이 되므로 28을 반환해 주면 됩니다.


2. 풀이

1) 내가 작성한 코드

for문을 통해 나머지가 0이 되는 값을 찾아 더해 해결했다.

 
def sumDivisor(num):
    answer = 0
     
    for i in range(1,num+1):
        if num%i==0:
            answer += i
   
    return answer
   
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(sumDivisor(12))



2) 다른 풀이

sum메소드를 통해 깔끔하게(?) 해결했다. 부럽다.

 
def sumDivisor(num):
    return sum([i for i in range(1, num+1) if num % i == 0])

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(sumDivisor(12))
Comments