약수의 개수와 덧셈 - Python

2023. 10. 14. 04:05공부/📝 프로그래머스

1. 풀이 코드

def divisor(n):
    count = 1
    for i in range(1, n // 2 + 1):
        if n % i == 0:
            count += 1
    return count


def solution(left, right):
    return sum([item if divisor(item) % 2 == 0 else -item for item in range(left, right + 1)])


# Test Cases
print(solution(13, 17))
print(solution(24, 27))

  위와 같이 새로운 함수 divisor()을 선언하여 풀었습니다. 약수의 개수를 직접 카운트합니다.

 

2. 다른 사람의 풀이 코드

def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        if int(i**0.5)==i**0.5:
            answer -= i
        else:
            answer += i
    return answer

  수학적 아이디어가 참신하네요. 약수의 개수가 홀수인 수는 제곱수밖에 없다는 걸 정말 잘 이용했습니다.