01
04

문제

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

 

코드

더보기
더보기
#include <string>
#include <vector>

using namespace std;

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

코드 설명

첫번째 for문에서 left의 값을 시작으로 한다 그리고 right의 값만큼 순회한다.

두번째 for문에서 1에서 부터 left 값만큼 순회하면서 left의 값이 i와 나눠서 나머지가 0이 나오면 check의 수를 하나 더해준다.

 

left값을 전부 순회하면 check 값을 확인하여 짝수이면 answer에 값을 더해주고 홀수이면 answer의 값에 빼준다.

 

COMMENT