728x90
<문제 링크>
https://programmers.co.kr/learn/courses/30/lessons/12928
<문제 풀이>
1. n이 0 또는 1일 때 약수는 0과 1뿐이다.
2. 2이상 약수는 1을 반드시 포함하므로, 1부터 반복문을 돌린다.
3. n//i이 i보다 작을 때 반복문을 멈춘다. (ex. 12//4 < 4)
4. n//i이 i와 같고, n/i==0일 때 i 값을 더하고 반복문을 멈춘다. (ex. 4/2==2)
5. n/i==0일 때 i값과 n//i 값을 더한다. (ex. 12%3==0일 때, 3과 4를 더함)
<코드>
def solution(n):
answer = 0
if n==1:
return 1
for i in range(1,n):
if n//i < i:
break
elif n//i == i and n%i==0:
answer += i
break
if n%i==0:
answer += i
answer += n//i
return answer
<고쳐야 할 점>
- 문제를 꼼꼼히 읽는다
- 항상 0,1 주의
- 복습 알고리즘
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[정렬] 프로그래머스 L1 '문자열 내 마음대로 정렬하기' (Python) (0) | 2022.03.20 |
---|---|
[소수의 판별] 프로그래머스 L1 '소수 찾기' (Python) (0) | 2022.03.20 |
[정렬] 프로그래머스 L1 '정수 내림차순으로 배치하기' (Python) (0) | 2022.03.19 |
[기타] 프로그래머스 L1 '최소공약수와 최소공배수' (Python) (0) | 2022.03.19 |
[DFS] 릿코드 200 Medium 'Number of Islands' (Python) (0) | 2022.02.09 |