약수의 합

수이·2025년 3월 6일
0

🟢 코드카타 / PYTHON

목록 보기
14/46
post-thumbnail

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

풀이
쉽게 생각했을때, n의 약수라는건 n / 약수 = 0이어야 한다! 1부터 n까지 반복해 더하면서 조건을 만족시키는 수만 더하면 된다 생각해서 반복문, 조건문을 같이 쓰기로 결정

def solution(n):
    answer = 0 # 약수 합 저장
    for i in range(1, n+1): # 1부터 n까지 반복
        if n % i == 0: # n / i = 0 (약수조건)
            answer += i # 값 더하기 
    return answer

다른사람 풀이

def sumDivisor(num):
    # num / 2 의 수들만 검사하면 성능 약 2배 향상잼
    return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0])

진짜 다른 사람 풀이 볼때마다 느끼는 거지만 똑똑한 사람들이 너무 많다😵‍💫

  • 약수는 절반 이하에 존재하는 짝이 있음
  • n의 절반보다 큰 숫자는 약수가 될 수 없음(n 자신 제외)
  • 그래서 num//2 까지만 검사하면 연산 횟수가 줄어드는 것

0개의 댓글

관련 채용 정보