사용 알고리즘: 순열
사용 언어: java
import java.util.*;
class Solution {
static HashSet<Integer> set = new HashSet<>();
static boolean[] visited ;
static char[] numbers_char;
public int solution(String numbers) {
numbers_char = new char[numbers.length()];
visited = new boolean[numbers.length()];
for(int i=0; i<numbers.length(); i++){
numbers_char[i] = numbers.charAt(i);
}
permutation("", 0);
System.out.println(set);
return set.size();
}
private static void permutation(String str, int idx){
if(str != "") {
if( isPrime(Integer.parseInt(str)) )
set.add(Integer.parseInt(str));
}
if(idx == numbers_char.length) return;
for(int i=0; i<numbers_char.length; i++) {
if( !visited[i] ) {
visited[i] = true;
permutation( str+numbers_char[i], idx+1 );
visited[i] = false;
}
}
}
private static boolean isPrime(int num) {
if(num==0 || num==1) return false;
for(int i=2; i<=Math.sqrt(num); i++) {
if(num%i == 0) return false;
}
return true;
}
}
알고리즘 선택 이유:
중복 제거를 위해 : set 사용
뽑는 순서가 상관 있으니까 permutation 사용
'알고리즘 > 프로그래머스' 카테고리의 다른 글
가장 먼 노드 (1) | 2023.12.27 |
---|---|
타겟 넘버 (1) | 2023.12.27 |
완주하지 못한 선수 (0) | 2023.12.25 |
피로도 ** (0) | 2023.12.25 |
[PCCP 기출문제] 2번 / 석유 시추 (1) | 2023.12.21 |