문제

한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.

각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.

제한사항

  • numbers는 길이 1 이상 7 이하인 문자열입니다.
  • numbers는 0~9까지 숫자만으로 이루어져 있습니다.
  • 013은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다.

나의 코드

import java.util.*;

public class FindPrimeNumber {
	public static int solution(String numbers) {
              int answer = 0;
              String[] strArr = numbers.split("");
              Set<Integer> set=new HashSet<>();
              for(int i=1;i<=strArr.length;i++){
                  perm(strArr, 0, i, set);
              }
              answer=set.size();
              return answer;
    }
	
	 public static void perm(String[] arr, int depth, int k, Set<Integer> set){
	        if(depth==k){
	            print(arr, k, set);
	            return;
	        }
	        else{
	            for(int i=depth;i<arr.length;i++){
	                swap(arr, i, depth);
	                perm(arr, depth+1, k, set);
	                swap(arr, i, depth);
	            }
	        }
	    }
	    public static void swap(String[] arr, int i, int j){
	        String temp=arr[i];
	        arr[i]=arr[j];
	        arr[j]=temp;
	    }
	    public static void print(String[] arr, int k, Set<Integer> set){
	        StringBuilder s=new StringBuilder();
	        for(int i=0;i<k;i++){
	            s.append(arr[i]);
	        }
	        primeNumber(set, s);
	    }
	    public static void primeNumber(Set<Integer> set, StringBuilder s){
	        int num=Integer.parseInt(String.valueOf(s));
	        boolean prime=true;
	        if(num<=1){
	            return;
	        }
	        for(int i=2;i<=Math.sqrt(num);i++){
	            if(num%i==0){
	                prime=false;
	                break;
	            }
	        }
	        if(prime){
	            set.add(num);
	        }
	    }
}

나의 풀이

 

 

'코딩테스트 풀이 > 프로그래머스' 카테고리의 다른 글

완전탐색 - 카펫 [JAVA]  (0) 2020.06.12
완전탐색 - 숫자 야구 [JAVA]  (0) 2020.06.11
완전탐색 - 모의고사 [JAVA]  (0) 2020.06.07
정렬 - H-Index [JAVA]  (0) 2020.06.05
정렬 - 가장 큰 수 [JAVA]  (0) 2020.06.04

+ Recent posts