풀이
import java.util.*;
class Solution {
HashSet<Integer> set = new HashSet<>();
public int solution(String numbers) {
int answer = 0;
char[] nums = numbers.toCharArray();
for(int r = 1; r<=numbers.length(); r++){
permutation(nums, new char[r], new boolean[nums.length], 0, nums.length, r);
}
for(int s:set){
if(isPrime(s)){
answer++;
System.out.println(s);
}
}
return answer;
}
public void permutation(char[] nums,char[] outputs, boolean[] visited, int depth, int n, int r){
if(depth == r){
StringBuilder sb = new StringBuilder();
for(char o:outputs){
sb.append(o);
}
set.add(Integer.parseInt(sb.toString()));
return;
}
for(int i=0; i<n; i++){
if(!visited[i]){
visited[i] = true;
outputs[depth] = nums[i];
permutation(nums, outputs, visited, depth+1, n, r);
visited[i] = false;
}
}
}
public boolean isPrime(int n){
if(n <= 1 ) return false;
if(n == 2) return true;
for(int i=2; i<=(int)Math.sqrt(n); i++){
if(n%i == 0) return false;
}
return true;
}
}