Algorithm/Solution

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

BeNI 2021. 8. 16. 19:41
728x90

코딩테스트 연습 - 약수의 개수와 덧셈 | 프로그래머스 (programmers.co.kr)

 

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

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

programmers.co.kr


 

🔎 문제 설명

 

left부터 right까지 약수의 개수가 짝수면 더하고 홀수면 빼는 방식

 

🔎 풀이 과정

 

함수하나를 만들어서 약수의 개수가 짝수면 x를 리턴하고, 홀수면 -x를 리턴하게 했다.

약수의 개수는 1부터 x까지 나머지가 0인 것을 카운트해주면 된다.

 

<정답코드>

#include <string>
#include <vector>

using namespace std;

int divisor(int x){
    int cnt=0;
    for(int i=1;i<=x;i++){
        if(x%i == 0) cnt++;
    }
    
    if(cnt%2==0) return x;
    else return -x;
}

int solution(int left, int right) {
    int answer = 0;
    for(int i=left; i<=right; i++){
        answer+=divisor(i);
    }
    return answer;
}
728x90