반응형
https://programmers.co.kr/learn/courses/30/lessons/77884?language=python3
def isPrimeNum(num):
cnt = 0
for i in range(1, num+1):
if num % i == 0:
cnt += 1
if cnt % 2 == 0:
return num
else:
return 0 - num
def solution(left, right):
answer = 0
for i in range(left, right+1):
answer += isPrimeNum(i)
return answer
그냥 단순히 약수의 개수를 구해서 풀었는데 다른 풀이를 보니 더 단순한 방법이 있었다.
약수의 개수가 홀수가 되는 경우는 딱 하나, 해당 수가 제곱근을 가지는 경우이다.
(제곱근: 음이 아닌 수 A에 대하여 제곱하여 A가 되는 수를 A의 제곱근이라고 한다.)
따라서 루트A의 소숫점을 버린 수가 루트A와 같다면 해당 수는 제곱근이다.
if int(A**0.5)==A**0.5: #이 경우 A**0.5는 A의 제곱근
따라서 해당 방법을 사용하면 아래와 같이 구현할 수 있다.
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
반응형
'Online-Judge > Programmers' 카테고리의 다른 글
[Programmers] Python 문자열 내림차순으로 배치하기 (0) | 2022.07.17 |
---|---|
[Programmers] Python 오픈채팅방 (0) | 2022.07.17 |
[Programmers] Python 영어 끝말잇기 (0) | 2022.06.28 |
[Programmers] Python 이진 변환 반복하기 (0) | 2022.06.28 |
[Programmers] Python 최대공약수와 최소공배수 (0) | 2022.06.21 |
댓글