▶ 문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
▶ 제한사항
- 1 ≤ left ≤ right ≤ 1,000
▶ 입출력 예
left right result
13 | 17 | 43 |
24 | 27 | 52 |
▶ 내가 짠 코드
def solution(left, right):
answer = 0
for i in range(left, right+1):
if prime(i) % 2 ==0:
answer += i
else:
answer -= i
return answer
def prime(n):
cnt = 0
for i in range(1, n):
if n % i == 0:
cnt+=1
return cnt+1
소수의 개수를 세는 함수 prime() 만들어 left부터 rignt까지 for문을 돌면서 약수의 개수를 세어 answer 값을 변경하여 리턴한다.
▶ 참고사항
다른사람의 풀이를 참고하니 역시 간단한 방법이 있었다.
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
'자료구조 & 알고리즘 & cs > CodingTest' 카테고리의 다른 글
프로그래머스 LEVEL1 - 예산 (0) | 2022.06.15 |
---|---|
프로그래머스 LEVEL1 - 3진법 뒤집기 (0) | 2022.06.15 |
프로그래머스 LEVEL1 - 실패율 (0) | 2022.06.14 |
프로그래머스 LEVEL1 - 폰켓몬 (0) | 2022.06.13 |
프로그래머스 LEVEL1 - 체육복 (0) | 2022.06.13 |