🔗 소수 찾기
import java.util.*;
class Solution {
public int solution(String numbers) {
// Set 으로 숫자 조합 저장
Set<Integer> numberSet = new HashSet<>();
boolean[] visited = new boolean[numbers.length()];
// 모든 자리수 조합을 만들기
generateNumbers("", numbers, visited, numberSet);
int count = 0;
for (int num : numberSet) {
if (isPrime(num)) {
count++;
}
}
return count;
}
// 숫자 조합을 만들어 Set에 추가
private void generateNumbers(String current, String numbers, boolean[] visited, Set<Integer> numberSet) {
if (!current.equals("")) {
numberSet.add(Integer.parseInt(current));
}
for (int i = 0; i < numbers.length(); i++) {
// 방문하지 않았다면
if (!visited[i]) {
visited[i] = true;
// 방문
generateNumbers(current + numbers.charAt(i), numbers, visited, numberSet);
visited[i] = false;
}
}
}
// 소수 판별
private boolean isPrime(int num) {
if (num < 2) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return false;
}
return true;
}
}
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[ 프로그래머스 ] #64065 : 튜플 - JAVA (0) | 2025.04.16 |
---|---|
[ 프로그래머스 ] #42586 : 기능개발 - JAVA (0) | 2025.04.15 |
[ etc ] #15 : 요세푸스 문제 - JAVA (0) | 2025.04.12 |
[ 프로그래머스 ] #42747 : H-Index - JAVA (0) | 2025.04.07 |
[ 프로그래머스 ] #81303 : 표 편집 - JAVA (0) | 2025.04.05 |