✔문제링크
📝문제설명
💡해결방법
👍코드
import java.util.HashSet;
import java.util.Set;
class Solution {
static Set<Integer> set;
static int[] nums;
static int[] sel;
static boolean selected[];
public int solution(String numbers) {
int answer = 0;
int len = numbers.length();
nums = new int[len];
for(int i=0; i<len; i++) {
nums[i] = numbers.charAt(i)-'0';
}
set = new HashSet<>();
for(int i=len; i>0; i--) {
selected = new boolean[len];
sel = new int[i];
perm(0);
}
for(Integer n: set) {
if(isPrime(n)) answer++;
}
return answer;
}
private void perm(int k) {
if(k == sel.length) {
int n=0;
for(int i=0; i<sel.length; i++) {
n += sel[i]*Math.pow(10, i);
}
set.add(n);
}else {
for(int i=0; i<nums.length; i++) {
if(selected[i]) continue;
selected[i] = true;
sel[k] = nums[i];
perm(k+1);
selected[i] = false;
}
}
}
private boolean isPrime(int n) {
if(n<=1) return false;
for(int i=2; i*i <=n; i++) {
if(n%i == 0) return false;
}
return true;
}
}