문제
https://school.programmers.co.kr/learn/courses/30/lessons/42839
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
import java.util.*;
class Solution {
static boolean visited[];
static Set<Integer> set = new HashSet<>();
public int solution(String numbers) {
int answer = 0;
visited = new boolean[numbers.length()];
back(numbers, "");
Iterator<Integer> it = set.iterator();
while(it.hasNext()){
if(find(it.next())) answer += 1;
}
return answer;
}
public void back(String numbers, String str){
if(!str.equals("") && str.length() <= numbers.length()){
int num = Integer.parseInt(str);
set.add(num);
System.out.println(str);
}
for(int i=0;i<numbers.length();i++){
if(!visited[i]){
visited[i] = true;
back(numbers, str + numbers.charAt(i));
visited[i] = false;
}
}
}
public boolean find(int num){
if(num == 0 || num == 1) return false;
for(int i=2;i*i<=num;i++){
if(num % i == 0) return false;
}
return true;
}
}