코테33) 약수의 합

gyu·2024년 4월 29일

Algorithm

목록 보기
34/45

📝 문제설명

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

제한 사항
n은 0 이상 3000이하인 정수입니다.
입출력 예
n return
12 28
5 6

내 풀이:

def solution(n):
    answer = []
    for i in range(1, n+1):
        if n % i == 0:
            answer.append(i)
    return sum(answer)

i)약수를 찾기 -> n % i == 0
ii) sum을 통해 약수의 합 구하기

생각해보니까 굳이 list에 안 넣고 그냥 int 하나 만들어서 더할 걸 싶었다. 근데 n이 3000이하 정수로 꽤 커서 실행횟수가 너무 많을 거 같아서 어떻게 향상시킬 수 있을까 해서 다른사람들의 풀이를 참고했다

✔ Tips to improve

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

n//2을 함으로써 중복되는 계산을 줄일 수 있어 성능을 향상시킬 수 있음

profile
#TechExplorer 🚀 Curious coder exploring the tech world, documenting my programming journey in a learning journal

0개의 댓글