99Club
Posts

© 2025. woongsnote All rights reserved.

Beginner
2024-05-07

약수의 개수와 덧셈

주어진 범위에서 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 반환하는 함수 구현하기

#99일지#99클럽#TIL#개발자스터디#코딩테스트#항해
직접 풀러가기

문제 설명

두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.

제한 사항

  • 1 ≤ left ≤ right ≤ 1,000

입출력 예시

leftrightresult
131743
242752

풀이

  • 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