한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.
각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.
string a = "0123456";
1. cout<<a.substr(2);
출력: 23456
2. cout<<a.substr(2,2);
출력: 23
next_permutation은 단순히 인자로 넘어왔을 때의 상황만 보고, 다음 순서에 해당하는 순열을 반환해주기 때문에 정렬되지 않은 container를 조작할 때에는 모둔 순열을 반환받을 수 없습니다.
int solution(string numbers) {
// 중복 방지를 위한 집합 자료구조
unordered_set<int> answer;
int temp=0;
sort(numbers.begin(),numbers.end());
do {
for (int i=1; i<numbers.size()+1; i++){
// 가능한 숫자의 조합을 모두 만들기위해 substr로 숫자의 길이를 변형
temp = stoi(numbers.substr(0, i));
if (isPrime(temp))
answer.insert(temp);
}
// next permutation 함수를 이용해 numbers의 값들을 다음 순열로 바꿈
} while(next_permutation(numbers.begin(), numbers.end()));
return answer.size();