bdfgdfg

[레벨 1] 소수 만들기 본문

코딩테스트/프로그래머스

[레벨 1] 소수 만들기

marmelo12 2021. 10. 28. 15:59
반응형
#include <vector>
#include <iostream>
using namespace std;

bool IsPrime(int num)
{
    for(int prime = 2; prime < num; ++prime)
    {
        if(num % prime == 0)
            return false;
    }
    return true;
}

int solution(vector<int> nums) {
    int answer = 0;
    int len = nums.size();
    // 2 3 5 7
    int i,j,k,num;
    for(i = 0; i < len; ++i)
    {
        for(j = i + 1; j < len; ++j)
        {
            for(k = j + 1; k < len; ++k)
            {
                if(IsPrime(num = nums[i] + nums[j] + nums[k]))
                    ++answer;
            }
        }
    }

    return answer;
}

IsPrime함수에서 굳이 num까지 돌 필요없이 반으로 나눈 후 그 사이에서 판별해도 된다. (처리시간이 많이줄어듬)

bool IsPrime(int num)
{
	int len = num / 2;
    for(int prime = 2; prime < len; ++prime)
    {
        if(num % prime == 0)
            return false;
    }
    return true;
}
반응형
Comments