|
์ฝ๋ ์์ฑํ๊ธฐ
import java.util.HashSet;
import java.util.Set;
// ์์ ์ฐพ๊ธฐ
public class Solution {
public static void main(String[] args) {
Solution s = new Solution();
String numbers = "01521";
System.out.println(s.solution(numbers));
}
/*
1. ๊ธ์๋ณ๋ก ์ซ์ ์ ์ฅ.
2. set์ ์ ์ฅ.
3. ํด๋น ์ซ์๊ฐ ์์์ธ์ง ํ์ธํ๊ณ ๋ฆฌํด
*/
static String[] numbersArr;
static boolean[] check;
static Set<Integer> savedNums = new HashSet<>();
public int solution(String numbers) {
int answer = 0;
// 1. ๋ฌธ์์ด์ ์ซ์๋ก ๋ณํํ์ฌ ํ๋์ฉ ์ ์ฅ
numbersArr = numbers.split("");
check = new boolean[numbersArr.length];
dfs(0, "");
// 4. ํด๋น ์ซ์๊ฐ ์์์ธ์ง ํ์ธํ๋ค.
return (int) savedNums.stream().filter(Solution::prime).count();
}
static void dfs(int depth, String current) {
if (depth > numbersArr.length) return;
for (int i = 0; i < numbersArr.length; i++) {
if (!check[i]) {
check[i] = true;
// 2. set์ ์ ์ฅํ๋ค.
savedNums.add(Integer.valueOf(current + numbersArr[i]));
dfs(depth + 1, current + numbersArr[i]);
check[i] = false;
}
}
}
static boolean prime(int n) {
if (n < 2) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
}
Java
๋ณต์ฌ
|
์ฝ๋ ์ค๋ช
ํ๊ธฐ
์กฐํฉ๋๋ ๋ฌธ์์ด์ ์ฒซ๋ฒ ์งธ ๋ฌธ์๊ฐ โ0โ์ผ๊ฒฝ์ฐ returnํ๋ ์กฐ๊ฑด์ ๋ถ์ฌ๋ณด์์ผ๋ ์คํ๋ ค ํจ์จ์ฑ์ด ๋จ์ด์ ธ ์ญ์ ํ์์.