Java
프로그래머스: 소수 찾기
Daeryuk Kim
2024. 3. 30. 23:02
import java.util.HashSet;
public class Solution {
private HashSet<Integer> numberSet = new HashSet<>();
public int solution(String numbers) {
boolean[] visited = new boolean[numbers.length()];
StringBuilder temp = new StringBuilder();
for (int i = 0; i < numbers.length(); i++) {
// 숫자 조합 생성
permutation(numbers, temp, visited, 0, i + 1);
}
// 소수 판별
return (int) numberSet.stream().filter(this::isPrime).count();
}
private void permutation(String str, StringBuilder temp, boolean[] visited, int depth, int r) {
if (depth == r) {
int num = Integer.parseInt(temp.toString());
numberSet.add(num);
return;
}
for (int i = 0; i < str.length(); i++) {
if (!visited[i]) {
visited[i] = true;
temp.append(str.charAt(i));
permutation(str, temp, visited, depth + 1, r);
temp.deleteCharAt(temp.length() - 1);
visited[i] = false;
}
}
}
private boolean isPrime(int number) {
if (number < 2) return false;
for (int i = 2; i * i <= number; i++) {
if (number % i == 0) return false;
}
return true;
}
public static void main(String[] args) {
Solution solution = new Solution();
System.out.println(solution.solution("17")); // 3
}
}