[Java] programmers-"약수의 개수와 덧셈"

김빛나리·2021년 12월 29일

문제 설명

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



제한사항

  • 1 ≤ left ≤ right ≤ 1,000


입축력 예

leftrightresult
131743
242752


알고리즘

  1. left부터 right까지해서 for문을 돌린다.
  2. 그 안에서 또 1부터 현재 숫자(i)까지 for문을 돌려서 약수의 갯수를 구한다.
  3. 구해진 약수의 갯수를 2로 나누었을 때 딱 떨어지면 answer에 더해주고, 딱 떨어지지 않으면 answer에서 빼준다.


내 소스 코드

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

0개의 댓글