import math
def solution(left, right):
answer = 0
for i in range(left, right+1) :
sqrt = math.sqrt(i)
if int(sqrt) == sqrt :
answer -= i
else :
answer += i
return answer
제곱수는 약수의 개수가 홀수이고, 제곱수를 제외한 모든 수는 약수의 개수가 짝수이다.
ex) 9의 약수의 개수 : 3개, 6의 약수의 개수 : 4개
n의 제곱근을 구하고 int(제곱근)와 제곱근이 같다면, n은 제곱수이다. 그렇다면 n의 약수의 개수는 홀수라는 것을 알 수 있다.
'코딩테스트' 카테고리의 다른 글
[백준][Python] 1931번 회의실 배정 문제 해설, 정답코드 (그리디 알고리즘) (1) | 2022.10.08 |
---|---|
[프로그래머스][C++] 두 수의 나눗셈 (int형 정수 나누기 소수점 얻기) (0) | 2022.10.02 |
[프로그래머스][C++] 배열의 평균값 (vector 평균 구하기) (0) | 2022.10.01 |
[프로그래머스][Python] 핸드폰 번호 가리기 (0) | 2022.10.01 |
[프로그래머스][Python] 정수 내림차순으로 배치하기 (0) | 2022.09.25 |