[TIL] 23.01.31 알고리즘

hyewon jeong·2023년 1월 31일
0

TIL

목록 보기
80/138

**1 약수의 개수와 덧셈


2 문제

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

제한사항
1 ≤ left ≤ right ≤ 1,000



3 풀이


4 소스 코드

1차 풀이

public class _02 {
    public static void main(String[] args) {


        Solution s1 = new Solution();
        s1.solution(13, 24);

        Solution s2 = new Solution();
        s2.solution(24, 27);

    }
 // 약수의 갯수를 구하기 
    public static 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 ++;
                 }
             }
             answer = (cnt%2 ==0)? answer+1: answer-1;
         }

            return answer;
        }
    }

2차 풀이

  • 제곱근이 있을때 약수의 개수가 홀수 임으로 제곱근을 이용하면 어떨까??
    하는 생각으로 시도 했다.
class Solution {
    public int solution(int left, int right) {
        int answer=0;
        for(int i = left; i<= right; i++ ){
            if(i%Math.sqrt(i)==0 ){
                answer -= i;
            }else{
                answer += i;
            }
        }
        return answer;
    }
}

업로드중..

테스트 속도도 빠르당 ><ㅎㅎ

profile
개발자꿈나무

0개의 댓글