본문 바로가기
개발일지/코딩테스트

[Programmers] 약수의 개수와 덧셈(C++)

by 쫌눈 2025. 4. 3.
728x90
반응형

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

https://jjomnoon-diary.tistory.com/55

 

[Programmers] 약수의 합(c++)

https://school.programmers.co.kr/learn/courses/30/lessons/12928 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr약수는 나눈 나머지가 0

jjomnoon-diary.tistory.com

위의 테스트와 비슷한 유형의 문제이다.

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int GetDivisorsCount(int num) 
{
	vector<int> divisors;
	for (int i = 1; i <= num; i++)
	{
		auto iter = find(divisors.begin(), divisors.end(), i);
		if (iter != divisors.end())
		{
			return divisors.size();
		}
		if (num%i == 0)
		{
			divisors.emplace_back(i);
			int a = num / i;
			iter = find(divisors.begin(), divisors.end(), a);
			if (iter != divisors.end())
			{
				return divisors.size();
			}
			else 
			{
				divisors.emplace_back(a);
			}
		}
	}
}

int solution(int left, int right) {
    int answer = 0;
    for (int i = left; i <= right; i++)
	{
        if (GetDivisorsCount(i)%2 == 0)//짝수
        {
            answer += i;
        }
        else {//홀수
            answer -= i;
        }
	}
    return answer;
}

728x90
반응형