메모/알고리즘의 뇌

[알고리즘문제풀이/JAVA] K번째수 소수찾기

음료요정 2026. 6. 1. 11:14

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/42839

 

import java.util.*;

class Solution {
    
    Set<Integer> set;

    public int solution(String numbers) {
        set = new HashSet<>();  // ✅ 매 호출마다 초기화로 해결

        permutation("", numbers);
        return (int) set.stream().filter(this::isPrime).count();
    }

    void permutation(String cur, String rem) {
        if (!cur.isEmpty()) set.add(Integer.parseInt(cur));
        for (int i = 0; i < rem.length(); i++)
            permutation(cur + rem.charAt(i),
                rem.substring(0,i) + rem.substring(i+1));
    }

    boolean isPrime(int n) {
        if (n < 2) return false;
        for (int i = 2; i <= Math.sqrt(n); i++)
            if (n % i == 0) return false;
        return true;
    }
    
}