소수 찾기

LJM·2023년 4월 26일
0

programmers

목록 보기
34/92

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

import java.util.*;

class Solution {
    
    static Set<Integer> set = new HashSet<>();
    public int solution(String numbers) {
        int answer = 0;
        
        boolean[] visit = new boolean[numbers.length()];
        int[] arr = new int[numbers.length()];
        
        for(int i = 1; i <= numbers.length(); ++i)
        {
            //System.out.println(i);
            dfs(numbers, 0, i, visit, arr);    
        }
   
        return answer = set.size();
    }

    
    public void dfs(String numbers, int depth, int max, boolean[] visit, int[] arr)
    {
        if(depth == max)
        {
            StringBuilder sb = new StringBuilder();
            for(int i = 0; i < max; ++i)
            {
                sb.append(arr[i]);
            }

            int n = Integer.parseInt(sb.toString());
            if(isPrime(n))
            {
                set.add(n);
                //System.out.println(n);
            }
            
            return;
        }
        
        for(int i = 0; i < numbers.length(); ++i)
        {
            if(visit[i] == false)
            {
                Character c = numbers.charAt(i);
                int cur = Integer.parseInt(c.toString());
                arr[depth] = cur;
                
                visit[i] = true;
                dfs(numbers, depth+1, max, visit, arr);
                visit[i] = false;
            }         
        }
    }
    
    public boolean isPrime(int n)
    {
        if(n == 1 || n == 0)
        {
            return false;
        }
        
        int len = (int)Math.sqrt(n);
        for(int i = 2; i <= len; ++i)
        {
            if(n%i == 0)
                return false;
        }
        
        return true;
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글