문제 설명

두 정수 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

+ Recent posts