Coding Test/Python
[Programmers] 약수의 개수와 덧셈 - 77884
ro_rdil_31
2024. 10. 1. 14:48
728x90
약수 출력이 아닌 개수만 세고 음/양 결정만 하면 되는 것이기 때문에 숏코드 뿐만 아니라 시간 복잡도, 메모리를 줄일 수 있는 방법이 있다 !
Question
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
Point
- ( n ** 0.5 ) % 1 로 완전 제곱인지 (약수 홀수) 판별 : Code 1
- 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