Algorithm/Programmers

[Python] 약수의 갯수와 덧셈

느낌표 공장장 2021. 5. 18. 23:24
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