https://programmers.co.kr/learn/courses/30/lessons/42839
stoi
를 이용해 string->int 변환 가능! #include <string>
에 있음next_permutation
을 이용해 순열을 만들 수 있다. #include <algorithm>
sqrt(n)
까지만 보면 됨!#include <cmath>
numbers로 모든 순열을 만들어내고, 그 순열마다 앞에서 1, 2, 순열크기... 순으로 하나씩 잘라내면서 만들 수 있는 모든 수를 찾는다.
이후 isPrime()함수를 이용해서 소수인지 판별하면 됨!
#include <string>
#include <cmath>
#include <algorithm>
#include <set>
using namespace std;
set<int> s;
bool isPrime(int num){
if(num<2) return false;
for(int i=2;i<=sqrt(num);i++){
if(num%i==0) return false; //1말고 다른 수와 나누어 떨어지면 소수가 아님!
}
return true;
}
int solution(string numbers) {
set<int> s;
sort(numbers.begin(),numbers.end()); //순열 permutation을 쓰기 위핸 꼭 필요!
do{
for(int i=1;i<=numbers.size();i++){
int num=stoi(numbers.substr(0,i)); //✨완성된 순열의 앞에를 순차적으로 자르기 //substr(시작인덱스, 길이)
if(isPrime(num)) s.insert(num);
}
}while(next_permutation(numbers.begin(),numbers.end()));
return s.size();
}