#include <string>
#include <vector>
#include <algorithm>
#include <unordered_set>
#include <cmath>
using namespace std;
bool isPrime(int& inData)
{
if(inData < 2)
return false;
for(int i = 2; i<= sqrt(inData); i++)
{
if(inData % i == 0)
return false;
}
return true;
}
int solution(string numbers) {
int answer = 0;
unordered_set<int>s;
do{
int num = 0;
for(int i = 0; i < numbers.size(); i++)
{
num = (numbers[i] - '0') + num * 10;
//num의 값이 소수인지 확인을 하자.
if(isPrime(num))
s.insert(num);
}
}while(next_permutation(numbers.begin(), numbers.end()));
answer = s.size();
return answer;
}
=> 다른 방법을 생각해보자.
그게 아니라,,, 정렬을 안했다....
#include <string>
#include <vector>
#include <algorithm>
#include <unordered_set>
#include <cmath>
using namespace std;
bool isPrime(int& inData)
{
if(inData < 2)
return false;
for(int i = 2; i<= sqrt(inData); i++)
{
if(inData % i == 0)
return false;
}
return true;
}
int solution(string numbers) {
int answer = 0;
unordered_set<int>s;
sort(numbers.begin(), numbers.end());
do{
int num = 0;
for(int i = 0; i < numbers.size(); i++)
{
num = (numbers[i] - '0') + num * 10;
//num = stoi(numbers.substr(0,i + 1));
//num의 값이 소수인지 확인을 하자.
if(isPrime(num))
s.insert(num);
}
}while(next_permutation(numbers.begin(), numbers.end()));
answer = s.size();
return answer;
}
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <set>
using namespace std;
bool isPrime(int num)
{
if(num < 2)
return false;
for(int i = 2; i <= sqrt(num); i++)
{
if(num % i == 0)
return false;
}
return true;
}
int solution(string numbers) {
int answer = 0;
set<int>s;
sort(numbers.begin(), numbers.end());
do
{
int num = 0;
for(int i = 0; i < numbers.length(); i++)
{
num += numbers[i] - '0';
if(isPrime(num))
{
s.insert(num);
}
num = num * 10;
}
}while(next_permutation(numbers.begin(), numbers.end()));
answer = s.size();
return answer;
}