본문 바로가기

코딩테스트/프로그래머스

[Java][프로그래머스-코딩테스트 level1] 약수의 개수와 덧셈

o 요구사항
left ~ rigtht까지 각각 주어진 숫자의 약수의 개수를 구하고 홀짝을 판별한다


o 코드진행
1. 약수의 개수 구하기
2. 홀짝 여부 판별
3. 약수가 짝수이면 더하고, 홀수라면 뺀 값을 리턴


o 코드설계
1. 약수 개수 구하기
N의 약수는 자기자신 N을 제외하고는 N/2 보다 클 수 없다
예를 들어 12의 약수는 12를 제외하고는 7이상이 될 수 없다
이를 이용해 메소드 생성

2. 홀짝 여부
2로 나누어 나머지가 1이면 홀수 0이면 짝수

 


o 완성코드

class Solution {
    public int solution(int left, int right) {
        int answer = 0;

        for(int i=left; i<right+1; i++) {
         answer = sum(answer, i, isEven(countMeasure(i)));
        }           
        return answer;
    }    
    
    //약수 개수 구하기
    int countMeasure(int n) {
     if(n == 1) {
     return 1;
     }        
     int count = 2;
    
        for(int i=1; i<n/2; i++) {
         if(n%(i+1) == 0) {
         count++;
           }
        }
        return count;
    }
    
    //짝수인가 판단하기
    boolean isEven(int x) {
     if(x%2 == 0) {
     return true;
     }
     return false;
    }
    
    //계산식
    int sum(int sum, int number, boolean isEven){
     if(isEven) {
     sum = sum + number;
     }
     if(!isEven) {
     sum = sum - number;
     }
     return sum;
    }
}