본문 바로가기
공부 정리/프로그래머스

[프로그래머스] 자바 약수의 개수와 덧셈

by 경적필패. 2022. 1. 12.
반응형

문제

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

입력 & 출력 제약사항

1 ≤ left ≤ right ≤ 1,000

 


테스트 케이스

 

left right result
13 17 43
24 27 52

 

 


접근

약수 개수를 구할 수만 있다면 쉽게 풀리는 문제라 생각합니다.

약수 개수를 구하는법은 1부터 해당 수까지 나눠서 나머지가 0일때마다 카운트합니다.

ex) 10의 약수 개수는 10을 1부터 10까지 계속 나누어서 나머지가 0일때 카운트합니다..

10 % 1 = 0

10 % 2 = 0

10 % 3 = 1

10 % 4 = 2

10 % 5 = 0

10 % 6 = 4

10 % 7 = 3

10 % 8 = 2

10 % 9 = 1

10 % 10 = 0

0이 나오는경우는 1, 2, 5, 10 총 4개입니다.


코드

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++){
                if(i % j == 0) cnt++;
            }
            
            if(cnt % 2 == 0) answer += i;
            else{
                answer -= i;
            }
        }
        return answer;
    }
}

주의

 

x

반응형

댓글