프로그래머스-소수찾기

이호영·2022년 4월 6일
0

프로그래머스-Level.2

목록 보기
16/36
import java.util.*;
 
class Solution {
 
    static StringBuilder sb = new StringBuilder();
    static HashSet<Integer> s = new HashSet<>();
    static String str;
    static int[] arr = new int[10];
    static boolean[] visit = new boolean[10];
    static int count;
     
    public int solution(String numbers) {
        int answer = 0;
        str = numbers+"";
        
        //자릿수 개수 ++
        for(int i = 1; i<=numbers.length(); i++){
            makePrime(0, i);
        };
        
        return s.size();
    }
    
    
    public static void makePrime(int N, int limit){ // 현재 자릿수, 제한할 자릿수.
        if(limit == N){ // 현재 자리수가 제한된 자릿수와 같아지면 종료.
            String sumstr = "";
            for(int j = 0; j<limit; j++)
                sumstr += arr[j]+"";
            
            int primeNumber = Integer.parseInt(sumstr);
 
            if(primeNumber < 2)
                return;
      
            for(int k = 2; k<=Math.sqrt(primeNumber); k++){
                if(primeNumber % k ==0)
                    return;
            }
            
            s.add(primeNumber);
            return;
        }
        for(int i = 0; i<str.length(); i++){
            if(visit[i] == false){
                visit[i] = true; 
                arr[N] = str.charAt(i) - '0';
                makePrime(N + 1, limit);
                visit[i] = false;
            }
        }
    }
}

0개의 댓글