본문 바로가기
알고리즘/문제 풀이

[Java 자바] 프로그래머스 > Lv.1 약수의 개수와 덧셈

by _eunji_ 2022. 2. 16.

https://programmers.co.kr/learn/courses/30/lessons/77884

 

코딩테스트 연습 - 약수의 개수와 덧셈

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

programmers.co.kr

문제 설명

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

제한사항

  • 1 ≤ left ≤ right ≤ 1,000

 

내 코드

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

 

다른 풀이

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

댓글