[프로그래머스] 소수 찾기.java

riyu_·2021년 7월 1일
0

프로그래머스

목록 보기
13/13

풀이

import java.util.*;
class Solution {
    HashSet<Integer> set = new HashSet<>();

    public int solution(String numbers) {
        int answer = 0;

        char[] nums = numbers.toCharArray();

        for(int r = 1; r<=numbers.length(); r++){
            permutation(nums, new char[r], new boolean[nums.length], 0, nums.length, r);
        }

        for(int s:set){
            if(isPrime(s)){
              answer++;
                System.out.println(s);
            } 
        }
        return answer;
    }

    public void permutation(char[] nums,char[] outputs, boolean[] visited, int depth, int n, int r){
        if(depth == r){
            StringBuilder sb = new StringBuilder();
            for(char o:outputs){
                sb.append(o);
            }
            set.add(Integer.parseInt(sb.toString()));
            return;
        }
        for(int i=0; i<n; i++){
            if(!visited[i]){
                visited[i] = true;
                outputs[depth] = nums[i];
                permutation(nums, outputs, visited, depth+1, n, r);
                visited[i] = false;
            }
        }
    }

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

0개의 댓글

관련 채용 정보