프로그래머스 소수찾기

윤희영·2022년 7월 21일
0

풀이과정


순열 + 소수찾기 이다. 에라토스텔레스의 체 + 순열 공식으로 풀수 있다.


코드


import java.util.*;
class Solution {
    private static int[]arr;
    public int solution(String numbers) {
        int answer = 0;
        HashSet<Integer>set = new HashSet<>();
        
        permu("", numbers, set);
        
        while(set.iterator().hasNext()){
            int a = set.iterator().next();
            set.remove(a);
            if(a==2) answer++;
            if(a%2!=0 && isPrime(a)){
                answer++;
            }
        }
        
        return answer;
    }
    private void permu(String a, String str , HashSet<Integer>set){
        int n = str.length(); // str 은 17 n은 2
        if(!a.equals("")){
            set.add(Integer.valueOf(a));
        }
        for(int i = 0; i<n ; i++){
            permu(a+str.charAt(i), str.substring(0, i) + str.substring(i+1, n), set);
        }
        
    }
    
    private boolean isPrime(int n){
        if(n==0|| n==1){
            return false;
        }
        for(int i = 3; i<(int)Math.sqrt(n); i+=2){
            if(n%i==0) return false;
        }
        return true;
    }
}
profile
특별

0개의 댓글

관련 채용 정보