본문 바로가기
알고리즘 & 자료구조/프로그래머스

소수 찾기

by 신재권 2023. 2. 17.
package programmers;

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

public class 소수찾기_1 {

   public static int solution(String numbers) {
      Set<Integer> numberSet = new HashSet<>();
      makeNumber(numberSet, numbers.toCharArray(), new boolean[numbers.length()], "");

      System.out.println(numberSet);
      int answer = 0;
      for (Integer num : numberSet) {
         if (isPrime(num)) {
            answer++;
         }
      }

      return answer;
   }

   private static boolean isPrime(int num) {
      if(num <= 1)
         return false;
      for (int i = 2; i < num; i++) {
         if (num % i == 0) {
            return false;
         }
      }
      return true;
   }

   private static void makeNumber(Set<Integer> numberSet, char[] numbers, boolean[] used, String s) {
      for (int i = 0; i < numbers.length; i++) {
         if (!used[i]) {
            s += String.valueOf(numbers[i]);
            used[i] = true;
            makeNumber(numberSet, numbers, used, s);
            s = s.substring(0, s.length() - 1);
            used[i] = false;
         }else{
            numberSet.add(Integer.parseInt(s));
         }
      }
   }

   public static void main(String[] args) {
      System.out.println(solution("17"));
      System.out.println(solution("011"));
   }
}

'알고리즘 & 자료구조 > 프로그래머스' 카테고리의 다른 글

큰 수 만들기  (1) 2023.02.20
쿼드압축 후 개수 세기  (0) 2023.02.18
다리를 지나는 트럭  (0) 2023.02.16
2XN 타일링  (0) 2023.02.15
2개 이하로 다른 비트  (0) 2023.02.14