첫번째 코드
직접 해당 범위의 모든 수의 약수의 개수를 구한 후
해당 범위 안의 값이 짝수면 더하고 홀수면 뺀다.
def solution(left, right):
answer = 0
count = [0] * 1001
for i in range(left, right + 1):
for j in range(1, i+1):
if i % j == 0:
count[i+1] += 1
for i in range(left, right + 1):
if count[i+1] % 2 == 0:
answer += i
else:
answer -= i
return answer
오류
1번에서 오류가 나는데 왜 틀렸는지는 잘 모르겠다...
두번째 코드
제곱근을 제외하고 약수는 늘 짝이 존재한다.
그렇기 때문에 제곱근이 있는 숫자의 경우 약수의 개수가 홀수이고, 나머지는 짝수이다.
import math
def solution(left, right):
answer = 0
for i in range(left, right + 1):
if int(math.sqrt(i)) ** 2 == i:
answer -= i
else:
answer += i
return answer
통과!
링크
programmers/프로그래머스/1/77884. 약수의 개수와 덧셈 at main · ornni/programmers
repository for recording Programmers Algorithm problem solving - ornni/programmers
github.com