๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿฆ• ๊ณต๋ฃก์ด ๋˜์ž!

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Java ์†Œ์ˆ˜์ฐพ๊ธฐ ๋ณธ๋ฌธ

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;
            }
        }
    }
}
๋ฐ˜์‘ํ˜•
Comments