Algorithm/ํ•ญํ•ด99(4๊ธฐ)

99ํด๋Ÿฝ ์ฝ”ํ…Œ ์Šคํ„ฐ๋”” 23์ผ์ฐจ TIL : ์™„์ „ํƒ์ƒ‰(ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์†Œ์ˆ˜ ์ฐพ๊ธฐ)

_dear 2024. 11. 20. 10:30

๐Ÿ’ก ํ’€์ด

- DFS

- ๊ฐ™์€ ์ˆ˜ ์ค‘๋ณตํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด Set<Integer> ์ž๋ฃŒ๊ตฌ์กฐ ์‚ฌ์šฉ

- searchSosu() : ์†Œ์ˆ˜์ฐพ๊ธฐ

- isSosu(int num) : ํ•ด๋‹น ์ˆ˜(num)๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ํŒ๋ณ„(true - ์†Œ์ˆ˜/ false- ์†Œ์ˆ˜x) 

import java.util.*;

class Solution {
    public int solution(String numbers) {
        int answer = 0;
        char[] numArr = numbers.toCharArray();
        boolean[] visited = new boolean[numbers.length()];
        
        Set<Integer> ansSet = new HashSet<>();
        searchSosu(numArr, visited, ansSet, "");
        answer = ansSet.size();
        return answer;
    }
    
    private void searchSosu(char[] numArr, boolean[] visited, Set<Integer> count, String str) {
        if (!str.isEmpty()) {
            int num = Integer.parseInt(str);
            if (isSosu(num)) {
                count.add(num);
            }
        }
        
        for (int i = 0; i < numArr.length; i++) {
            if (!visited[i]) {
                visited[i] = true;
                searchSosu(numArr, visited, count, str + numArr[i]);
                visited[i] = false; // ์›์ƒ ๋ณต๊ตฌ
            }
        }
    }
    
    public boolean isSosu(int num) {
        if (num < 2) return false;
        for (int i = 2; i <= Math.sqrt(num); i++) { // √num ๊นŒ์ง€๋งŒ ํ™•์ธ
            if (num % i == 0) return false;
        }
        return true;
    }
}

 

 

๐Ÿ“Œ ์˜ค๋Š˜์˜ ํšŒ๊ณ 

์™„์ „ํƒ์ƒ‰์— ์ ์  ์ต์ˆ™ํ•ด์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์ ์œผ๋ฉด ์ „์ฒด๋ฅผ ํƒ์ƒ‰ํ•ด๋„ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ์ง€ ์•Š์œผ๋‹ˆ, ์™„์ „ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋‹ˆ, ์–ด๋–ค ๋ฌธ์ œ์— ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์ด์šฉํ• ์ง€๋Š” ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ํ’€์–ด๋ด์•ผ ํ• ๊ฒƒ ๊ฐ™๋‹ค.

 

* ์™„์ „ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜

โ‘  Brute Force ๊ธฐ๋ฒ• - ๋ฐ˜๋ณต / ์กฐ๊ฑด๋ฌธ์„ ํ™œ์šฉํ•ด ๋ชจ๋‘ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•
โ‘ก ์ˆœ์—ด(Permutation) - n๊ฐœ์˜ ์›์†Œ ์ค‘ r๊ฐœ์˜ ์›์†Œ๋ฅผ ์ค‘๋ณต ํ—ˆ์šฉ ์—†์ด ๋‚˜์—ดํ•˜๋Š” ๋ฐฉ๋ฒ•
โ‘ข ์žฌ๊ท€ ํ˜ธ์ถœ
โ‘ฃ ๋น„ํŠธ๋งˆ์Šคํฌ - 2์ง„์ˆ˜ ํ‘œํ˜„ ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
โ‘ค BFS, DFS๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•