✨️ 문제 설명
: 두 정수 left와 right가 매개변수로 주어질 때, left부터 right의 모든 수 중에서 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수를 뺀 수를 return하는 함수 완성
🎲 자바 풀이
첫번째 풀이
class Solution {
public int solution(int left, int right) {
int answer = 0;
for (int num = left; num <= right; num++) {
int sqrt = (int) Math.sqrt(num);
if (sqrt * sqrt == num) {
answer -= num;
} else {
answer += num;
}
}
return answer;
}
}
두번째 풀이 : stream 사용
import java.util.stream.IntStream;
class Solution {
public int solution(int left, int right) {
int answer = IntStream.range(left, right + 1)
.map(num -> {
int sqrt = (int) Math.sqrt(num);
return sqrt * sqrt == num ? -num : num;
})
.sum();
return answer;
}
}
풀이 설명
: 제곱수의 약수의 개수는 항상 홀수이므로, 제곱수인 경우는 - 그 외는 더해서 답을 구한다.