Blog

P77884 약수의 개수와 덧셈

날짜 2024-03-25
사용 언어 Java
문제 유형
정답률 %
문제 URL https://school.programmers.co.kr/learn/courses/30/lessons/77884

문제 #

문제 설명 #

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

제한사항 #
  • 1 ≤ left ≤ right ≤ 1,000

나의 풀이 #

class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        
        for(int i = left; i <= right; i++) {
            // 제곱근이 정수일 경우 약수의 개수는 홀수
            answer += Math.sqrt(i) % 1  == 0 ? i*(-1) : i ;
            
        }
        
        return answer;
    }
}

다른 사람의 풀이 #

class Solution {
    public int solution(int left, int right) {
        int answer = 0;

        for (int i=left;i<=right;i++) {
            //제곱수인 경우 약수의 개수가 홀수
            if (i % Math.sqrt(i) == 0) {
                answer -= i;
            }
            //제곱수가 아닌 경우 약수의 개수가 짝수
            else {
                answer += i;
            }
        }

        return answer;
    }
}

관련개념 학습 #