728x90
def solution(n):
if n <= 1:
return n
answer = 1+n
for i in range(2, n//2+1):
if n%i == 0:
answer += i
return answer
<내 풀이 분석>
answer: 약수의 합
1. 0이면 0, 1이면 1을 반환한다.
2. answer에 1과 자기자신 값을 미리 더해준다.(1일 경우를 처리해주었으므로, 자기 자신이 1인 경우는 생각할 필요 x)
3. 입력값을 [2~ (n//2 + 1)] 값으로 나누고 나머지가 0이면 약수이므로 answer에 더해준다.
대학교 1학년때인가 과제하면서 절반까지 비교하면 시간이 많이 줄어든다는 걸 알았기 때문에 n//2값을 끝값으로 사용했다.
시간을 더 줄일 수 있는 좋은 풀이들이 많을 것 같다.
728x90
'알고리즘 > programmers[1]' 카테고리의 다른 글
[프로그래머스] 예산: python3 (0) | 2022.01.21 |
---|---|
[프로그래머스] 3진법 뒤집기: python3 (0) | 2022.01.21 |
[프로그래머스] 약수의 개수와 덧셈: python3 (0) | 2022.01.21 |
[프로그래머스] 실패율: python3 (0) | 2022.01.20 |
[프로그래머스] 체육복: python (0) | 2022.01.20 |