#프로그래머스. 소수찾기

gisung2215·2020년 11월 1일
1

👍 알고리즘

목록 보기
10/29
post-thumbnail

✔문제링크

프로그래머스. 소수찾기

📝문제설명

💡해결방법

👍코드

import java.util.HashSet;
import java.util.Set;

class Solution {
    
    static Set<Integer> set;
	static int[] nums;
	static int[] sel;
	static boolean selected[];
    public int solution(String numbers) {
       int answer = 0;
        int len = numbers.length();
        
        nums = new int[len];
      
        for(int i=0; i<len; i++) {
        	nums[i] = numbers.charAt(i)-'0';
        }
        set = new HashSet<>();
        for(int i=len; i>0; i--) {
        	selected = new boolean[len];
	        sel = new int[i];
	        perm(0);
        }
        
        for(Integer n: set) {
        	if(isPrime(n)) answer++;
        }
        return answer;
    }
    private void perm(int k) {
		
		if(k == sel.length) {
			int n=0;
			for(int i=0; i<sel.length; i++) {
				n += sel[i]*Math.pow(10, i);
			}
			set.add(n);
		}else {
			for(int i=0; i<nums.length; i++) {
				if(selected[i]) continue;
				selected[i] = true;
				sel[k] = nums[i];
				perm(k+1);
				selected[i] = false;
			}
		}
		
	}
    private boolean isPrime(int n) {
		if(n<=1) return false;
		
		for(int i=2; i*i <=n; i++) {
			if(n%i == 0) return false;
		}
		return true;
	}
}

0개의 댓글