๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm

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

๋ฐ˜์‘ํ˜•

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

https://programmers.co.kr/learn/courses/30/lessons/42839

๋ฌธ์ œ ์ ‘๊ทผ

String์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ์ˆซ์ž๋“ค๋กœ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆซ์ž ์กฐํ•ฉ์„ ๋งŒ๋“ค๊ณ  ์ด ์ˆซ์ž์ค‘์„ธ์„œ ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค.
์†Œ์ˆ˜๋ฅผ ์ฐพ๊ธฐ์œ„ํ•ด์„œ Math.sqrt(n)์„ ์ด์šฉํ•ด์„œ ๋ฐ˜๋ณต๋ฌธ ํšŸ์ˆ˜๋ฅผ ์ค„์ด๊ณ , dfs๋ฅผ ์ด์šฉํ•ด์„œ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜์˜€๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ฐ™์€ ์ˆซ์ž๊ฐ€ ๋‘๊ฐœ ์ด์ƒ์žˆ์œผ๋ฉด ์ค‘๋ณต๋˜๋Š” ์ˆซ์ž๋“ค์ด ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋˜์–ด์„œ HashSet์„ ์ด์šฉํ•ด์„œ ์ค‘๋ณต ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜์˜€๋‹ค.

Code

import java.util.HashSet;
class Solution {
    char[] nums;
    boolean[] visited;
    HashSet<Integer> hs = new HashSet<>();
    public int solution(String numbers) {
        nums = new char[numbers.length()];
        visited = new boolean[numbers.length()];
        for(int i = 0 ; i<numbers.length(); i++){
            nums[i] = numbers.charAt(i);
        }
        dfs("");
        return hs.size();
    }

    void dfs(String str){
        if(str.length() != 0){
            int num = Integer.parseInt(str);
            if(isPrime(num)) {
                hs.add(num);
            }
        }
        for(int i = 0; i<nums.length; i++){
            if(!visited[i]){
                if(str.length() == 0 && nums[i] == '0') continue;
                visited[i] = true;
                dfs(str+nums[i]);
                visited[i] = false;
            }
        }

    }

    boolean isPrime(int n){
        if(n==0 || n==1) return false;
        for(int i = 2; i<=Math.sqrt(n); i++){
            if(n%i == 0) return false;
        }
        return true;
    }
}

์–ด๋ ค์› ๋˜ ์  / ๋ฐฐ์šด ์  / ๋Š๋‚€ ์ 

011์ด ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜ค๊ฒŒ ๋˜๋ฉด 11 101์ด ๋‘๋ฒˆ์”ฉ ์กฐํ•ฉ์ด ๋  ์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ์ค‘๋ณต ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ HashSet์„ ์ด์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด์ „๊นŒ์ง€ ํ’€์—ˆ๋˜ ๋ฌธ์ œ๋“ค์€ 011์ด๋ผ๋ฉด str์˜ ๊ธธ์ด๊ฐ€ 3์ผ๋•Œ๊นŒ์ง€ ๊ฐ„ ๋‹ค์Œ์— ํŒ๋ณ„ํ•˜๋Š” ๋ฌธ์ œ๋“ค์ด์˜€๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ๊นŒ 1์ด๋‚˜ 10 ๊ฐ™์€ 1,2์˜ ๊ธธ์ด๋ฅผ ๊ฐ€์ง„ ์ˆซ์ž๋“ค์€ ๊ฑด๋„ˆ๋›ฐ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์—ฌ๋„ ๋ฌธ์ œ๊ฐ€ ์—„์ฒญ ๋‹ค์–‘ํ•˜๋‹ค...ํ›„...

๋ฐ˜์‘ํ˜•