## 의사코드 ##
# 약수 구하기
# def get_divisor(n):
# data = set()
# 1부터 n의 양의 제곱근까지 n과 나눠지는지 확인
# for i in range(1, int(n ** (1 / 2)) + 1):
# if n % i == 0:
# data.add(i)
# data.add(n // i)
# return sorted(data)
# 약수의 개수가 짝수이면 더하고 홀수이면 빼기
# for i in range(left, right+1):
# if len(get_divisor(i)) % 2 == 0:
# answer += i
# else:
# answer -= i
통과한 코드
def get_divisor(n):
# 약수 구하기
data = set()
# 1부터 n의 양의 제곱근까지 n과 나눠지는지 확인
for i in range(1, int(n ** (1 / 2)) + 1):
if n % i == 0:
data.add(i)
data.add(n // i)
return sorted(data)
def solution(left, right):
answer = 0
for i in range(left, right+1):
# 약수의 개수가 짝수이면 더하기
if len(get_divisor(i)) % 2 == 0:
answer += i
# 약수의 개수가 홀수이면 빼기
else:
answer -= i
return answer