Beginner
2024-05-07약수의 개수와 덧셈
주어진 범위에서 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 반환하는 함수 구현하기
#99일지#99클럽#TIL#개발자스터디#코딩테스트#항해
직접 풀러가기문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한 사항
-
1 ≤
left≤right≤ 1,000
입출력 예시
| left | right | result |
| 13 | 17 | 43 |
| 24 | 27 | 52 |
풀이
-
left부터right까지 반복문을 돌면서, 약수의 개수가 짝수인 경우, 더하고, 홀수면 빼면 된다 🙂 -
특정 숫자
𝑖의 약수의 개수가 홀수인 경우는 그 숫자가 완전제곱수(perfect square)일 때다. - 약수의 개수를 세는 대신, 완전제곱수 여부를 판단해서 약수의 개수가 홀수인지 확인한다.
JavaScript
function solution(left, right) {
var answer = 0;
for (let i = left; i <= right; i++) {
answer += Number.isInteger(Math.sqrt(i)) ? -i : i
}
return answer;
}
해당 함수를 Python으로 구현하면 아래와 같다.
Python
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
TIL
Python에서 완전제곱수를 구하는 방법: int(i**0.5) == i**0.5