Wacky_Life

 

코딩테스트 연습 - 약수의 합

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수

programmers.co.kr

 

 

 

문제 설명

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

 

 

 

제한 사항

  • n은 0 이상 3000이하인 정수입니다.

 

 

 

입출력 예

n return
12 28
5 6

 

 

 

입출력 예 설명

- 입출력 예#1

12의 약수는 1,2,3,4,6,12입니다. 이를 모두 더하면 28 입니다.

- 입출력 예#2

5의 약수는 1,5 입니다. 이를 모두 더하면 6 입니다.

 

 

 

나의 코드

1
2
3
4
5
6
def solution(n):
    answer = 0
    for i in range(1,n+1):
        if n % i == 0:
            answer += i
    return answer
cs

 

for 문의 i를 1부터 입력 받은 수 n까지 돌리고 n을 i로 나눠서 나머지가 0일 때 answer에 더한다 그리고 그 answer 값을 return한다.

 

 

다른 코드

1
2
def solution(n):
    return n + sum([i for i in range(1, (n//2)+1if n % i == 0])
cs

 

for 문의 i를 1부터 n까지가 아닌 (n//2)+1 까지 하고 마지막에 return 값에 n을 더함으로써 위의 코드보다 코드의 전체적인 수 뿐만 아니라 효율을 높인 코드이다.

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading