https://school.programmers.co.kr/learn/courses/30/lessons/42839
https://hu-coding.tistory.com/132
문제가 풀리지 않아 위 블로그를 통해 이해하고 풀었다.
재귀 과정도 따라서 작성해보았다.
import java.util.HashSet;
import java.util.Set;
public class P3 {
static int[] ch;
static Set<Integer> set = new HashSet<>();
static char[] c;
public static void main(String[] args){
P3 p = new P3();
String numbers = "314";
System.out.println(p.solution(numbers));
}
public int solution(String numbers) {
int answer = 0;
c = numbers.toCharArray();
ch = new int[c.length];
dfs("",0);
answer = set.size();
return answer;
}
public static void dfs(String str, int idx){
if(!str.equals("")){
if(check(Integer.parseInt(str))){
set.add(Integer.parseInt(str));
}
}
// 마지막 숫자까지 계산하고 나서
if(idx == c.length) {
return;
}
for(int i=0; i<c.length; i++){
if(ch[i]==1) continue;
ch[i] = 1;
dfs(str+c[i],idx+1);
ch[i] = 0;
}
}
public static boolean check(int num){
boolean flag = true;
if(num==0 || num==1) return false;
if(num==2) return true;
for(int i=2; i<num; i++){
if(num%i==0) {
flag = false;
break;
}
}
return flag;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 모음 사전_자바 (0) | 2022.12.03 |
---|---|
[프로그래머스] 전력망을 둘로 나누기_자바 (0) | 2022.12.03 |
[프로그래머스] 가장 큰 수_자바 (0) | 2022.12.01 |
[프로그래머스] 이중우선순위큐_자바 (0) | 2022.12.01 |
[프로그래머스] 프린터_자바 (0) | 2022.11.30 |