def solution(left, right):
answer = 0
while left <= right :
temp = []
for i in range(1, left+1) :
if left % i == 0 :
temp.append(i)
if len(temp) % 2 == 0 :
answer += left
else :
answer -= left
left += 1
return answer
풀이
while left <= right :
temp = []
for i in range(1, left+1) :
if left % i == 0 :
temp.append(i)
① left가 right보다 작거나 같을 경우에만 while문이 돌도록 해준다.
② 1부터 left까지 반복문을 돌면서 나누어 떨어질 경우에만 temp에 추가한다.
(1과 자기자신은 돌 필요 없지 않나 ? 라고 생각했지만 케이스가 1, 2, 3.. 인 경우가 있으므로 range(1, left+1)로 설정해주었다.)
if len(temp) % 2 == 0 :
answer += left
else :
answer -= left
left += 1
① 약수를 저장했던 리스트 temp의 길이가 짝수이면 answer에 left를 더하고 홀수이면 left를 빼준다.
② left에 1을 더해 그다음 수로 넘어간다.
'Algorithm > Programmers' 카테고리의 다른 글
[Python] 내적 (0) | 2021.05.18 |
---|---|
[Python] 이상한 문자 만들기 (0) | 2021.05.18 |
[Python] 짝지어 제거하기 (0) | 2021.05.15 |
[Python] 예산 (0) | 2021.05.14 |
[Python] 보석 쇼핑 (0) | 2021.05.11 |