공부하자/알고리즘

[프로그래머스] Lv.1 약수의 개수와 덧셈 java

snbrin 2022. 5. 3. 13:55

https://programmers.co.kr/learn/courses/30/lessons/77884

 

코딩테스트 연습 - 약수의 개수와 덧셈

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

programmers.co.kr

 

문제

두 정수 left와 right. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return하는 함수를 완성하시오.

제한조건

1 <= left <= right <= 1,000

 

.java

class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        int count =0;
        
        //제곱수가 있으면 홀, 없으면 짝
        for(int i=left; i<=right; i++){
        	//i의 제곱으로 나누떨어지면 i는 제곱수라는 뜻
            if(i%Math.sqrt(i)==0)
            	//제곱수가 있을 경우 약수는 홀수개므로 빼기
                answer -= i;
                
            //제곱수가 없으면 약수는 짝수개이므로 더하기    
            else
                answer += i;
        
        }
        
        return answer;
    }
}

실행 결과

2022.04.24 - [공부하자/알고리즘] - [프로그래머스] Lv.1 정수 제곱근 판별 java 문제에서 힌트 얻음!