문제 풀이 (JAVA)

class Solution {
    public int solution(int left, int right) {
        int answer = 0; // 결과 출력 변수
        for(int i=left; i<=right; i++){
            int cnt=0; // 약수 카운트 초기화
            for(int j=1; j<=i; j++){ // 1부터 left~right 까지 약수 계산문
                if(i%j==0){ // 임의의 숫자 j로 나눴을때 0이면 약수
                    cnt++; // 약수 카운트 증가
                }
            }
            if(cnt%2==0){ // 약수가 짝수이면
                answer+=i; // 출력값에 더한다.
            }else{ // 약수가 홀수이면
                answer-=i; // 출력값에 뺀다.
            }
        }
        return answer;
    }
}

주요 핵심 포인트

1. left부터 right 숫자 사이 모든 약수를 구하기 위하여 이중 for문을 돌렸다.

2. 나머지 ==0인 숫자는 약수이므로 해당 숫자의 약수카운트를 증가시켰다.

3. 약수카운트가 짝수이면 더하고, 약수카운트가 홀수이면 뺀다.

'프로그래머스(JAVA)' 카테고리의 다른 글

폰켓몬  (0) 2022.05.21
실패율  (0) 2022.05.21
3진법 뒤집기  (0) 2022.05.21
예산  (0) 2022.05.21
두 개 뽑아서 더하기  (0) 2022.05.21

+ Recent posts