Algorithm/Programmers

[Lv.2] 소수찾기 : Java

say! 2025. 7. 5. 00:38
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