문제
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
내 코드
def find(n):
cnt = 0
for w in range(2, n+1):
if n % w == 0:
cnt += 1
return cnt
def solution(left, right):
result = 0
for n in range(left, right+1):
if find(n) % 2 == 1:
result += n
else:
result -= n
return result
문제 풀이
find() -> n을 2 이상의 수로 나누었을 때 나머지가 0인 개수를 찾는 함수
find 함수에서 return 받은 수를 짝수/홀수로 나누어 +- 연산을 통해 result return
고수 풀이
제곱수는 약수의 개수가 홀수인 것을 이용.
제곱수가 아닌 애들은 다 짝수!
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
'Python > Programmers' 카테고리의 다른 글
Lv.1-숫자 문자열과 영단어 (0) | 2021.07.08 |
---|---|
Lv.1-키패드 누르기 (0) | 2021.07.08 |
Lv.1-내적 구하기 (0) | 2021.07.07 |
Lv.1-크레인 인형뽑기 (0) | 2021.07.07 |
Lv.1-모의고사 (0) | 2021.07.07 |