프로그래머스/Java | Level1

[프로그래머스/Java]Level1 - 약수의 개수와 덧셈

뿌꾸 빵 2021. 12. 20. 18:46
728x90
반응형
 

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

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

programmers.co.kr

문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한 조건
  • 1 ≤ left  right ≤ 1,000
입출력 예
left right return
13 17 43
24 27 52
  • 입출력 예#1
    • 다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다.
      13 : 1,13 => 2개
      14 : 1,2,7,14 => 4개
      15 : 1,3,5,15 => 4개
      16 : 1,2,4,8,16 => 5개

    • 따라서, 13 + 14 + 15 - 16 + 17 = 43을 return 해야 합니다.
  • 입출력 예#2
    • 다음 표는 24부터 27까지의 수들의 약수를 모두 나타낸 것입니다.
      24 : 1,2,3,4,6,8,12,24 => 8개
      25 : 1,5,25 => 3개
      26 : 1,2,13,26 => 4개
      27 : 1,3,9,27 => 4개
    • 따라서, 24 - 25 + 26 + 27 = 52를 return 해야 합니다.

나의 풀이

1.  약수의 개수를 구할 숫자 i를 left~right 사이의 수로 반복

2. left~right 사이에 있는 수들의 숫자를 구해 count에 넣음

3. count가 홀수이면 answer에서 빼기, 짝수이면 answer에서 더하기

class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        
        for (int i=left; i<=right; i++) {
            int count = 0;
            for (int j=1; j<=i; j++) {
                if (i%j == 0) count++;
            }
            
            if (count % 2 == 0)
                answer = answer+i;
            else
                answer = answer-i;
        }
        
        return answer;
    }
}
728x90
반응형