728x90
import java.util.*;
class Solution {
Set<Integer> numberSet = new HashSet<>();
public int solution(String numbers) {
boolean[] visited = new boolean[numbers.length()];
dfs("", numbers, visited);
int count = 0;
for (int num : numberSet) {
if (isPrime(num)) count++;
}
return count;
}
// 모든 순열 생성
void dfs(String current, String numbers, boolean[] visited) {
if (!current.equals("")) {
numberSet.add(Integer.parseInt(current));
}
for (int i = 0; i < numbers.length(); i++) {
if (!visited[i]) {
visited[i] = true;
dfs(current + numbers.charAt(i), numbers, visited);
visited[i] = false;
}
}
}
// 소수 판별
boolean isPrime(int num) {
if (num < 2) return false;
int sqrt = (int)Math.sqrt(num);
for (int i = 2; i <= sqrt; i++) {
if (num % i == 0) return false;
}
return true;
}
}'Algorithm > Programmers' 카테고리의 다른 글
| [Lv.2] 기능개발 : Java (3) | 2025.07.05 |
|---|---|
| 완주하지 못한 사람 : Java (0) | 2025.07.05 |
| [Lv.2] 피로도 : Java / DFS+백트래킹 (0) | 2025.07.05 |
| [Lv.3] 이중우선순위큐 (0) | 2025.07.04 |
| [Lv.3] 정수 삼각형 : Java / DP (0) | 2025.07.04 |