728x90
320x100
def solution(left, right):
answer = 0
cnt = 0
list = []
for i in range(left, right+1):
for j in range(1, i+1):
if i % j == 0:
cnt += 1
if cnt % 2 == 0:
answer += i
cnt = 0
else :
answer -= i
cnt = 0
return answer
- ex) 20의 약수를 구할 땐 20 / 1~20까지를 나눴을 때 0 인 것들이 약수임. 맨날 까먹냐 진짜.
(+) 쬑금 개선
def solution(left, right):
answer = 0
for i in range(left, right+1):
cnt = 0
for j in range(1, i+1):
if i % j == 0:
cnt += 1
if cnt % 2 == 0:
answer += i
else :
answer -= i
return answer
각 if문에서 초기화 하지 않고 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
- i ** 0.5 : i의 제곱근을 구함. ex) 4의 제곱근을 구함. (4의 제곱근은 2)
- 이 제곱근이 정수로 표현이 가능한 수는 약수의 개수가 홀수개
- ex) 2를 제곱근으로 가지는 4는 1,2,4으로 3개, 5를 제곱근으로 가지는 25는 1,5,25 로 3개.
- 반면 10의 제곱근은 3.1622776601683795 으로 정수가 아닌데 10의 약수는 1,2,5,10 이렇게 4개로 짝수임.
- 그래서 제곱근에 int를 씌운 것과 안씌운 것이 동일한지 아닌지 판단
- => 제곱수를 제외한 모든 정수들의 약수의 개수는 무조건 짝수 개수이며 제곱수만 홀수 개수임
728x90
320x100
'💻 하나씩 차곡차곡 > 프로그래머스 (Python)' 카테고리의 다른 글
[프로그래머스/python/Lv1] 3진법 뒤집기 (0) | 2023.12.18 |
---|---|
[프로그래머스/python/Lv1] 부족한 금액 계산하기 (0) | 2023.12.17 |
[프로그래머스/python/Lv1] 내적 (0) | 2023.12.15 |
[프로그래머스/python/Lv1] 없는 숫자 더하기 (0) | 2023.12.14 |
[프로그래머스/python/Lv1] 음양 더하기 (0) | 2023.12.13 |