[프로그래머스/자바] 약수의 개수와 덧셈

솔솔·2023년 2월 10일
0
post-thumbnail


📑 문제 설명

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



🧑🏻‍💻 문제 풀이

class Solution {
    public int solution(int left, int right) {
		int answer = 0;
        
        for(int i=left;i<=right;i++) {
        	int num = 0;
        	for(int j=1;j<=i;j++) {
        		if(i%j==0) {++num;}
        	}
        	answer += num%2==0 ? i : -i;
        }
        return answer;
    }
}

i = left~right 사이의 수 / j = 1~i
j가 i의 약수인 경우 ++num
num(약수의 개수)가 짝수이면 answer에 +i, 홀수이면 -i



🧑🏻‍💻 다른 사람의 풀이

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;
    }
}

제곱근을 구하는 Math.sqrt() 함수를 이용해 풀이함



🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/77884?language=java

0개의 댓글