문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한사항
- n은 0 이상 3000이하인 정수입니다.
입출력 예시
n | return |
---|---|
12 | 28 |
5 | 6 |
나의 풀이
전형적인 약수를 구하는 문제이다.
약수를 구하는 문제는 항상 시간초과에 대비하여 그 수의 제곱근까지만 계산하도록 하자.
def solution(n):
answer = 0
for i in range(1, int(n ** 0.5) + 1):
if n % i != 0:
continue
answer += i if i == n // i else sum([i, n // i])
return answer
'Programmers' 카테고리의 다른 글
[Programmers] 자연수 뒤집어 배열로 만들기 - level 1 (0) | 2022.10.13 |
---|---|
[Programmers] 자릿수 더하기 - level 1 (0) | 2022.10.01 |
[Programmers] 서울에서 김서방 찾기 - level 1 (0) | 2022.09.26 |
[Programmers] 문자열을 정수로 바꾸기 - level 1 (0) | 2022.09.21 |
[Programmers] 문자열 내 p와 y의 개수 - level 1 (0) | 2022.09.19 |