[문제링크 - 프로그래머스 - 소수 찾기] https://school.programmers.co.kr/learn/courses/30/lessons/42839
import java.util.*;
class Solution {
static HashSet<Integer> set = new HashSet<>();
static boolean[] visit;
public int solution(String numbers) {
int answer = 0;
visit = new boolean[numbers.length()];
for(int i=0; i<numbers.length(); i++){
visit[i] = true;
dfs(numbers, numbers.charAt(i)+"");
visit[i] = false;
}
for (Integer s : set) {
if(isPrime(s)) answer++;
}
return answer;
}
public void dfs(String numbers, String temp){
if(temp != null){
int num = Integer.parseInt(temp);
set.add(num);
}
if(temp.length() == numbers.length()){
return;
}
for(int i=0; i<numbers.length(); i++){
if(!visit[i]){
visit[i] = true;
dfs(numbers, temp+numbers.charAt(i));
visit[i] = false;
}
}
}
public boolean isPrime(int num){ //소수 판별
if(num==1||num==0) return false;
for(int i=2; i<=Math.sqrt(num); i++){
if(num%i==0) return false;
}
return true;
}
}