from math import sqrt
def solution(n):
if n == 0 or n == 1:
return n
answer = n+1
for x in range(2, int(sqrt(n))+1):
if n % x == 0:
answer += sum(set([x, n//x]))
return answer
풀이
1. 0과 1일 경우 그대로 리턴
2. answer = n + 1 (1과 자기 자신)
3. 2부터 n의 제곱근 까지
- n을 나눈 나머지가 0이면, answer에 x와 n//x를 더해준다.
- 단 16의 약수 4와 같이 x와 n//x가 같을 경우를 대비해 집합의 성질을 이용해서 중복 값 제거
4. answer 리턴
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv1 - 자릿수 더하기 (파이썬) (0) | 2022.03.24 |
---|---|
[프로그래머스] Lv1 - 이상한 문자 만들기 (파이썬) (0) | 2022.03.23 |
[프로그래머스] Lv1 - 시저 암호 (파이썬) (0) | 2022.03.23 |
[프로그래머스] Lv1 - 문자열을 정수로 바꾸기 (파이썬) (0) | 2022.03.23 |
[프로그래머스] Lv1 - 수박수박수박수박수박수? (파이썬) (0) | 2022.03.22 |