coding_test

[코딩테스트] 2. 약수의 갯수와 덧셈 (with 자바)

jeri 2024. 10. 17. 11:14
반응형

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 나의 풀이

class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        for(int i=left; i<=right; i++){
            if(is약수의갯수는짝수(i)) answer += i;
            else answer -= i;
        }
        return answer;
    }
    
    //약수의 갯수가 짝수면 true
    public boolean is약수의갯수는짝수(int num){
        int count = 0; //약수의갯수
        for (int i = 1; i <= num; i++) {//약수라면 카운트증가
            if (num % i == 0) {
                count++;
            }
        }
        
        if(count%2==0) return true;
        else return false;
    }
    
    
    
}

2. 제곱수인 경우는 약수의 갯수가 홀수이다!! (대박적..)

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;
    }
}
반응형