ror_coding

[Programmers] 약수의 개수와 덧셈 - 77884 본문

Algorithm/Python

[Programmers] 약수의 개수와 덧셈 - 77884

ro_rdil_31 2024. 10. 1. 14:48
728x90

약수 출력이 아닌 개수만 세고 음/양 결정만 하면 되는 것이기 때문에 숏코드 뿐만 아니라 시간 복잡도, 메모리를 줄일 수 있는 방법이 있다 !

 

Question

 

두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.

 

 

Point

 

  1. ( n ** 0.5 ) % 1 로 완전 제곱인지 (약수 홀수) 판별 : Code 1
  2. int(n**0.5)==(n**0.5) 로 완전 제곱인지 판별 : Code 2

 

 

Code 1 : 완전 제곱 판별
( n ** 0.5 ) % 1

 

def solution(left, right):
    return sum(n if (n ** 0.5) % 1 else -n for n in range(left, right + 1))

 

 

Code 2 : 완전 제곱 판별
int(n**0.5)==(n**0.5)

 

def solution(left, right):
    return sum(-n if int(n**0.5)==(n**0.5) else n for n in range(left, right + 1))
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

 

now me

On my github

 

728x90