중복없이 담기위해 HashSet 생성하여 모든 숫자 조합을 담은 후 소수를 판단하여 카운트
코드
import java.util.*;
class Solution {
HashSet<Integer> numbersSet = new HashSet<>();
public int solution(String numbers) {
dfs("", numbers);
int count = 0;
Iterator<Integer> it = numbersSet.iterator();
while (it.hasNext()) {
int number = it.next();
if (isPrime(number))
count++;
}
return count;
}
public boolean isPrime(int num) {
if (num == 0 || num == 1)
return false;
int lim = (int)Math.sqrt(num);
for (int i = 2; i <= lim; i++)
if (num % i == 0)
return false;
return true;
}
public void dfs(String str, String numbers) {
if (!str.equals(""))
numbersSet.add(Integer.valueOf(str));
for (int i = 0; i < numbers.length(); i++)
dfs(str + numbers.charAt(i), numbers.substring(0, i) + numbers.substring(i + 1));
}
}