import java.util.*;
class Solution {
public boolean[] visited;
public String[] arr;
public int answer = 0;
public Set<Integer> set = new HashSet<>();
public int solution(String numbers) {
arr = numbers.split("");
visited = new boolean[arr.length];
for(int i=1; i<=arr.length; i++) { recur(0, i, ""); }
return answer;
}
public void recur(int index, int len, String s) {
if(index==len) {
int n = Integer.parseInt(s);
if(isPrime(n) && !set.contains(n)) {
set.add(n);
answer++;
}
return;
}
for(int i=0; i<arr.length; i++) {
if(visited[i]) { continue; }
visited[i] = true;
recur(index+1, len, s+arr[i]);
visited[i] = false;
}
}
public boolean isPrime(int n) {
if(n==0 || n==1) { return false; }
for(int i=2; i*i<=n; i++) {
if(n%i==0) { return false; }
}
return true;
}
}
'Problem Solving > Programmers' 카테고리의 다른 글
[Level 2] 예상 대진표 (0) | 2022.04.06 |
---|---|
[Level 2] 조이스틱 (0) | 2022.03.31 |
[Level 2] 가장 큰 수 (0) | 2022.03.31 |
[Level 2] 프린터 (0) | 2022.03.31 |
[Level 2] 전화번호 목록 (0) | 2022.03.31 |