[프로그래머스-레벨1]약수의 합 - python

iamjinseo·2022년 8월 22일
0

문제풀이-Python

목록 보기
76/134

https://school.programmers.co.kr/learn/courses/30/lessons/12928

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

제한 사항
n은 0 이상 3000이하인 정수입니다.

풀이

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

말그대로 약수의 합을 더하면 됨

결과

남의 코드

num / 2 의 수들만 검사하면 성능 약 2배 향상

천잰데?
예를들어 num이 12면 절반인 6의 약수들(1, 2, 3, 6) 검사한 다음에 12를 더해버리면 그만이다.
대박이당..ㄷㄷ


num//2보다 num\**0.5가 더 낫다는 얘기도 있다.

예를들어 num이 16이면 4의 약수들(1,2,4)검사한 다음에 16을 더하면 된다.
=>그런데 num이 제곱수가 아니면 검사를 못하는데? if int(num**0.50) == num**0.5와 같은 예외처리가 필요해보인다.
아무튼 제곱수에 대해서는 빠른 처리를 할 수 있겠다.


뭐지 수학 천재들인가

profile
일단 뭐라도 해보는 중

0개의 댓글