728x90
반응형
{{문제}}
두 정수 left와 right가 매개변수로 주어집니다.
left부터 right까지의 모든 수들 중에서,
약수의 개수가 짝수인 수는 더하고,
약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
※제한사항※
1 ≤ left ≤ right ≤ 1,000
{{풀이}}
def solution(left, right):
#1 약수의 개수 구하기
dic = {}
for n in range(left, right+1):
cnt = 0
for i in range(1, n+1):
if i*i > n: break
if n%i == 0:
cnt+=1
if i*i < n: cnt+=1
dic[n] = cnt
#2 짝수개이면 양수, 홀수개이면 음수
s = 0
for n, cnt in dic.items():
if cnt%2 == 0:
s += n
else:
s -= n
return s
{{인상 깊었던 다른 분의 풀이}}
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
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스]최대공약수와최대공배수-Python3 (0) | 2021.07.29 |
---|---|
[프로그래머스]짝수와홀수-Python3 (0) | 2021.07.29 |
[프로그래머스]완주하지못한선수-Python3 (0) | 2021.07.29 |
[프로그래머스]3진법뒤집기-Python3 (0) | 2021.07.29 |
[프로그래머스]소수만들기-C++ (0) | 2021.07.29 |