[C++] - 알고리즘1

김영웅·2025년 1월 2일

정리

  • 알고리즘을 풀어봤다.


알고리즘을 어떻게 푸는가?에 대해서 공부했기에 알고리즘을 풀어보겠다.
프로그래머스에 약수의 개수와 덧셈이라는 문제이다.

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


두 정수가 주어질 때, 그 수 사이의 모든 수 중에서 약수의 개수가 짝수인 수는 더하고 홀수인 수는 빼는 함수를 제작하라는 문제이다.
두 정수 사이를 반복하며 해당 수의 약수의 갯수를 구하면 될 것 같다.

제한 사항도 딱히 너무 커서 시간이 오래 걸릴 문제는 아닌 듯하다.

#include <string>
#include <vector>

using namespace std;

bool DivisorIsEvenNumber(int number)
{
	int divisorCount = 0;
	for (int i = 1; i <= number * 0.5f; i++)
		if (number % i == 0)
			divisorCount++;

	//본인을 추가
	divisorCount++;

	return divisorCount % 2 == 0;
}


int solution(int left, int right)
{
	int answer = 0;
	for (int i = left; i <= right; i++)
		answer += DivisorIsEvenNumber(i) ? i : -i;

	return answer;
}
profile
게임 프로그래머

0개의 댓글