문제링크: 약수의 개수와 덧셈
✍🏻 Information
| content | |
|---|---|
| 언어 | python |
| 난이도 | ⭐️ |
| 풀이시간 | 8분 |
| 제출횟수 | 3 |
| 인터넷검색유무 | yes |
🍒 My Code
def solution(left, right):
answer = 0
for i in range(left,right+1):
tmp = 0
sqt = int(i ** (1/2))
for j in range(1,sqt+1):
if j*j==i:
tmp = 1
break
if tmp==0:
answer+=i
else:
answer-=i
#print(i,answer)
return answer
💡 What I learned
처음에 j의 range를 (1,i//2) -> (1,i)로 해줘서 1이 인식 안돼서 testcase 1개씩을 통과하지 못했었다. 그러다 혼자 혹시? 하고 보니 역시 저거 때문이었다...
약수의 개수가 홀수인 경우는 제곱근이 정수일때뿐이기 때문에 이를 이용해서 풀었다.
제곱근 계산하는 방법
1) **(1/2) 해주기
2) math.sqrt() 사용 -> import math 해주어야함
세제곱근부터는 ** 연산자로 해야함
나처럼 j for문 안돌려도 풀 수 있었다.
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