def solution(left, right):
answer = 0
for num in range(left, right+1):
count = 0
for i in range(1, num+1):
if num % i == 0:
count += 1
answer += num if count % 2 == 0 else -num
return answer
그냥 for문을 돌리는 방법으로 풀었다. 시간 복잡도 검사도 없고 1도 껴있어서 그냥 저렇게 풀었는데,
def solution(left, right):
answer = 0
for num in range(left, right+1):
count = 2
if num == 1:
count = 1
for i in range(2, num):
if num % i == 0:
count += 1
answer += num if count % 2 == 0 else -num
return answer
이런식으로 num == 1 일때 1로 빼버리고, 나머지는 1과 자기자신은 무조건 들어가니까 두개 줄이면... 지금 생각해보니 시간 복잡도가 비슷할 것 같네...
다른 사람의 풀이
def solution(left, right):
return sum([-n if int(n ** 0.5) == n ** 0.5 else n for n in range(left, right+1)])
찢었네.. 제곱수만 홀수라고 생각은 했는데 for문으로 그걸 가려낼 방법이 있나 싶었는데.... 그냥 저렇게 하면 되는구나...