sein-choi 님의 블로그

[PYTHON] Lv.1 약수의 합 본문

QUIZ/[PYTHON]

[PYTHON] Lv.1 약수의 합

sein-choi 2025. 2. 28. 18:23

✅문제

def solution(n):
    total = 0
    for i in range(1,1+n):
        if n % i == 0:
            total += i
    return total

약수는 정수 n이하의 자연수를 나열하였을 때, 자연수가 n으로 나누어 떨어진다면 정수 n의 약수가 됩니다.

 

✅다른 풀이: 시간이 단축되는 코드

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

기존 n+1→ n//2+1 로 변경한 이유는 약수는 자기 자신을 제외하고 자신의 절반 이상 값을 가질 수 없습니다

  • 12의 약수: 1,2,3,4,6,12
  • 6의 약수: 1,2,3,6

이를 적용하면 1~n까지 반복하는 것을 1~n//2까지만 반복하므로 반복 횟수가 절반으로 줄어들게 됩니다.

 

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr