문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
내가짠 코드
class Solution {
public int solution(int left, int right) {
int answer = 0;
for(int k=left;k<=right;k++){
if(sum(k)%2==0)
{
answer+=k;
}
else
{
answer-=k;
}
}
return answer;
}
public int sum(int a)
{
int count=0;
for(int i=1;i<=a;i++)
{
if(a%i==0)
{++count;}
}
return count;
}
}
참고할만한 다른사람 코드
import java.util.*;
class Solution {
int yaksu(int x) {
if(x == 1) return 1;
Set<Integer> set = new HashSet<>();
for(int i = 1; i <= x / 2; i++) {
if(x % i == 0) {
set.add(i);
set.add(x / i);
}
}
return set.size();
}
public int solution(int left, int right) {
int answer = 0;
for(; left <= right; left++) answer += left * (yaksu(left) % 2 == 0 ? 1 : -1);
return answer;
}
}
'코딩(알고리즘)' 카테고리의 다른 글
[LEVEL1] 행렬의 덧셈 (0) | 2022.03.23 |
---|---|
[LEVEL1] 문자열을 정수로 바꾸기 (0) | 2022.03.23 |
[LEVEL1] 문자열다루기 기본 (0) | 2022.03.23 |
[LEVEL1] 3진법 뒤집기 (0) | 2021.11.11 |
[LEVEL1] 가운데 글자 가져오기 (0) | 2021.11.03 |