두 정수 left
와 right
가 매개변수로 주어집니다. left
부터 right
까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
left
≤ right
≤ 1,000def solution(left, right):
answer = 0
while left!=right+1: //left에서 right까지 반복
count = 0 //약수 개수 초기화
for i in range(1, left+1): //약수 개수 구하기
if left%i ==0: //i가 left로 나누어 떨어진다면
count +=1 //약수의 개수 +1
if count%2==0: //약수의 개수 홀짝 검사
answer +=left //짝수라면 더하고
else:
answer -=left //홀수면 뺀다.
left +=1
return answer
1. 약수의 개수를 찾는 수학적 원리와 알고리즘을 까먹어서 처음에 많이 헤맸다!! 다시 공부해야겠다.
2. 적혀있는 그대로 풀었더니 너무 복잡한 것 같아서 더 간단하게 풀 수 있는 방법을 연구해야겠다.