공부 흔적남기기

프로그래머스 약수의 개수와 덧셈 본문

코테/프로그래머스

프로그래머스 약수의 개수와 덧셈

65살까지 코딩 2022. 1. 16. 22:49
728x90
반응형
class Solution {
    public int solution(int left, int right) {
        
        int sum = 0;
        for(int i =left; i<=right; i++){
            //약수가 짝수개라면 총합에 +1
            if(yaksu(i) %2 ==0){
                sum += i;
            // 약수가 홀수개라면 총합에 +2
            }else{
                sum-= i;
            }
        }
        return sum;
    }
    //약수를 구하는 함수!
    public int yaksu(int num){
        int count = 2;
        //약수는 1부터 시작하니까 1부터 시작해서 양의 제곱근 까지 
        for(int i =1; i<=Math.sqrt(num); i++){
            //i는 양수만 처리함 ex) 9
            if(num% i ==0){
                // 양의 제곱근이라면 ex) 3
                if(i == Math.sqrt(num)){
                    //한번만 세고
                    count++;
                // 그냥 약수라면 ex) 1, 9인데 하나만 처리되므로 +2
                }else{
                //2 번 더해줘야함
                    count +=2;
                }
            }
        }
        return count;
    }
}

출처: https://programmers.co.kr/learn/courses/30/lessons/77884

 

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

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

programmers.co.kr

 

728x90
반응형