최대 1 분 소요

https://school.programmers.co.kr/learn/courses/30/lessons/77884

내 풀이.

def count_factor(num) :
    if num == 1 : return 1

    answer = 2
    for i in range(2, num) :
        if num % i == 0 :
            answer += 1
    return answer

def solution(left, right):
    answer = 0
    for num in range(left, right + 1) :
        if count_factor(num) % 2 == 0 :
            answer += num
        else :
            answer -= num
    return answer

다른 사람의 풀이

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

제곱수의 약수의 개수는 홀수라는 사실을 이용한 풀이이다.

명색이 수학과인데 떠올리지 못했다니.. 틈틈이 정수론 공부 해야겠다..

댓글남기기