개발/java
[프로그래머스_java] 약수의 개수와 덧셈
유우웁
2024. 8. 23. 11:44
반응형

문제
두 정수 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++){
int cnt = 0;
for(int j = 1; j<=i; j++){
if(i%j == 0){// 약수인 경우
cnt ++;
}
}
if(cnt % 2 ==0){
answer += i;
}else{
answer -= 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;
}
}
제곱인 경우 약수가 홀수이고, 제곱수가 아니면 약수의 개수가 짝수라는 점..
Math.sqrt(25); //25의 제곱
반응형