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

allnight5·2023년 3월 30일
0

프로그래머스

목록 보기
53/73

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

자바 풀이

class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        for(int i= left; i<right+1; i++){
            answer += reValue(i);
        }
        return answer;
    }
    public int reValue(int value){
        int count = 0;
        for(int i=1; i*i<=value; i++){
            if(i*i == value) count++;
            else if(value%i ==0) count +=2;
        }
        
        return (count%2 ==0)? value:-value;
    }
}

자바 Math 제곱근 활용

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;
    }
}

파이썬 푼거

def solution(left, right):
    answer = 0
    for i in range(left, right+1):
        answer += sum_number(i)
        
    return answer

def sum_number(number):
    number_list = []
    for i in range(1, number//2+1):
        if(number%i ==0):
            number_list.append(i)
    
    list_size = len(number_list) +1
    if list_size%2 ==0:
        return number
    else : 
        return -number

다른방법

def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        if int(i**0.5)==i**0.5:
            answer -= i
        else:
            answer += i
    return answer
profile
공부기록하기

0개의 댓글