Development/CodingTest
[ํ๋ก๊ทธ๋๋จธ์ค] Java ์์์ฐพ๊ธฐ
Kirok Kim
2021. 12. 25. 12:04
import java.util.*;
class Solution {
ArrayList<Integer> answer;
boolean[] visited;
public int solution(String numbers) {
answer = new ArrayList<Integer>();
visited = new boolean[numbers.length()];
int[] nums = new int[numbers.length()];
for(int i = 0; i < nums.length; i++) {
nums[i] = Integer.parseInt(numbers.charAt(i)+"");
}
for(int i = 1; i <= numbers.length(); i++) {
int[] output = new int[i];
perm(nums, output, 0,nums.length, i);
}
return answer.size();
}
public boolean sosu(int num) {
if(num <= 1)return false;
if(num == 2 || num == 3)return true;
for(int i = 2; i <= Math.sqrt(num); i++) {
if(num % i == 0)return false;
}
return true;
}
public void perm(int[] nums, int[] output,int depth, int n, int r) {
if(depth == r) {
String answer2 = "";
for(int i = 0; i < output.length; i++) {
answer2 += output[i];
}
int num = Integer.parseInt(answer2);
if(sosu(num)) {
if(!answer.contains(num)) {
answer.add(num);
}
}
return;
}
for(int i = 0; i < nums.length; i++) {
if(!visited[i]) {
visited[i] = true;
output[depth] = nums[i];
perm(nums, output,depth+1, n, r);
output[depth] = 0;
visited[i] = false;
}
}
}
}
ArrayList<Integer> answer;
boolean[] visited;
public int solution(String numbers) {
answer = new ArrayList<Integer>();
visited = new boolean[numbers.length()];
int[] nums = new int[numbers.length()];
for(int i = 0; i < nums.length; i++) {// ๋ฌธ์์ด์ intํ์ผ๋ก ๋ณํ ํ ๋ฐฐ์ด
nums[i] = Integer.parseInt(numbers.charAt(i)+"");
}
for(int i = 1; i <= numbers.length(); i++) {
//์์ด์ ์ฌ์ฉํ์ฌ i์๋ฆฌ ์์ ArrayList์ ๋ฃ๊ธฐ
int[] output = new int[i];
perm(nums, output, 0,nums.length, i);
}
return answer.size(); // ์์ ๊ฐฏ์
}
public boolean sosu(int num) { // ์์ ์ฐพ๋ ๋ฉ์๋
if(num <= 1)return false;
if(num == 2 || num == 3)return true;
for(int i = 2; i <= Math.sqrt(num); i++) {// ์๋ผํ ์คํ
๋ค์ค์ ์ฒด๋ฅผ ํ์ฉ
if(num % i == 0)return false;
}
return true;
}
- ์๋ผํ ์คํ ๋ค์ค์ ์ฒด ํ์ฉํ ์์ ์ฐพ๋ ๋ฉ์๋ ๋ค๋ฅธ ver.
public boolean isPrime(int n){
if(n==0 || n==1) return false;
for(int i=3; i<=(int)Math.sqrt(n); i+=2){
if(n%i==0) return false;
}
return true;
}
public void perm(int[] nums, int[] output,int depth, int n, int r) {//visited ํ์ฉํ ์์ด
if(depth == r) {// r๊ฐ ๋ฝ๊ธฐ
String answer2 = "";
for(int i = 0; i < output.length; i++) {
answer2 += output[i];//int๋ฅผ stringํํ๋ก ๋ณํ
}
int num = Integer.parseInt(answer2);
if(sosu(num)) {
if(!answer.contains(num)) {
answer.add(num);
}
}
return;
}
for(int i = 0; i < nums.length; i++) {
if(!visited[i]) {
visited[i] = true;
output[depth] = nums[i];
perm(nums, output,depth+1, n, r);
output[depth] = 0;
visited[i] = false;
}
}
}
}
๋ฐ์ํ