🙆♀️ 정답 풀이
import java.util.*;
class Solution {
static int answer;
static Set<Integer> decimalList = new HashSet<>();
public int solution(String numbers) {
answer = 0;
char[] numberArr = numbers.toCharArray();
char[] output = new char[numberArr.length];
boolean[] visited = new boolean[numberArr.length];
for(int i=0;i<numberArr.length;i++){
permutation(numberArr,output,visited,0,i+1);
}
answer = decimalList.size();
return answer;
}
private static void permutation(char[] arr, char[] res,boolean[] visited,int depth, int r){
if(depth==r){
StringBuilder sb = new StringBuilder();
for(int i=0;i<r;i++){
sb.append(res[i]);
}
if(checkPrime(sb.toString())){
decimalList.add(Integer.parseInt(sb.toString()));
}
}
for(int i=0;i<arr.length;i++){
if(!visited[i]){
visited[i] = true;
res[depth] = arr[i];
permutation(arr,res,visited,depth+1,r);
visited[i] = false;
}
}
}
private static boolean checkPrime(String str){
int checkNum = Integer.parseInt(str);
if(checkNum<=1) return false;
if(checkNum==2) return true;
for(int i=2;i<checkNum;i++){
if(checkNum%i==0) return false;
}
return true;
}
}