Development

[프로그래머스] 약수의 개수와 덧셈 본문

코딩테스트/Python

[프로그래머스] 약수의 개수와 덧셈

yo~og 2021. 8. 4. 14:31
반응형

내 코드

def isPrime(num):
    
    a = []
    for i in range(1,num+1):
        if num%i==0:
            a.append(i)
    return a
    

def solution(left, right):
    answer = 0
    
    for i in range(left,right+1):
         if len(isPrime(i))!=0:
                answer+= i if len(isPrime(i))%2==0 else -i
    return answer

 

isPrime은 약수의 list를 return해주는 함수이다. 

left와 right를 for문으로 돌려 약수 list가 비어있지 않을때 길이가 짝수면 더해주고 홀수면 빼주었다.

 

 

다른사람 코드

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

제곱수는 약수의 개수가 홀수이다..!! 생각도 못했다..

0.5를 제곱하는 것이 루트를 사용한것과 같으므로 루트i가 int형으로 딱 떨어지면 제곱수이다. 제곱수면 약수의 개수가 홀수이기 때문에 -를 해준다.

짝수이면 +를 해준다.

 

반응형
Comments