1. ๋ฌธ์ œ์„ค๋ช…

ํ•œ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์ ํžŒ ์ข…์ด ์กฐ๊ฐ์ด ํฉ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค. ํฉ์–ด์ง„ ์ข…์ด ์กฐ๊ฐ์„ ๋ถ™์—ฌ ์†Œ์ˆ˜๋ฅผ ๋ช‡ ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์ข…์ด ์กฐ๊ฐ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ ํžŒ ๋ฌธ์ž์—ด numbers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ข…์ด ์กฐ๊ฐ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์†Œ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

์ž…์ถœ๋ ฅ ์˜ˆ

numbers return
"17" 3
"011" 2

2. ๋ฌธ์ œ๋ถ„์„(์‚ฌ์ „)

3. JAVA์ฝ”๋“œ

import java.util.HashSet;
import java.util.Iterator;

public class Solution {

    // ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LEVEL2 ์†Œ์ˆ˜ ์ฐพ๊ธฐ
    // ๋ฌธ์ œ URL : <https://programmers.co.kr/learn/courses/30/lessons/42839>

    // '11๊ณผ 011์€ ๊ฐ™์€ ์ˆซ์ž๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.'
    // --> ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋ฉด์„œ ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๋Š” set ์„ ์–ธ
    HashSet<Integer> set = null;

    public int solution(String numbers) {
        int answer = 0;
        set = new HashSet<>();
        // numbers์— ์„ ์–ธ๋œ ์ˆซ์ž๋กœ ๋ชจ๋“  ์ˆซ์ž ํƒ์ƒ‰
        permutation("", numbers);
        Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()) {
            answer += chkPrimeNum(iterator.next());
        }

        return answer;
    }

    // ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ์ฒดํฌํ•˜๋Š” ํ•จ์ˆ˜
    private int chkPrimeNum(Integer num) {
        // ํ•ด๋‹น ์กฐํ•ฉ ์ˆซ์ž์ค‘ 0, 1์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์„ ์ฒ˜๋ฆฌ
        if (num == 0 || num == 1) {
            return 0;
        }
        int endNum = (int) Math.sqrt(num);    // ํ•ด๋‹น ์ˆซ์ž ๋ฃจํŠธ๊ฐ’ ๊ตฌํ•œ ๋’ค ์ง„ํ–‰
        for (int i = 2; i <= endNum; i++) {
            // ํ•ด๋‹น ์ˆซ์ž๊ฐ€ i ์ˆซ์ž์˜ ๋ฐฐ์ˆ˜์ค‘ ํ•˜๋‚˜์ด๋ฉด ์†Œ์ˆ˜ X
            if ((num % i) == 0) {
                return 0;
            }
        }
        return 1;
    }

    // ์ˆซ์ž ํƒ์ƒ‰ํ•˜๋Š” ํ•จ์ˆ˜(๋ฐฑํŠธ๋ž˜ํ‚น)
    // 1, 17, 7 ,71
    private void permutation(String prefix, String numbers) {
        int n = numbers.length();
        if (!"".equals(prefix)) {
            // ๋นˆ๊ฐ’์ด ์•„๋‹ˆ๋ฉด ๋ชจ๋“  ์ˆซ์ž๋ฅผ set์— ํฌํ•จ
            set.add(Integer.parseInt(prefix));
        }
        for (int i = 0; i < n; i++) {
            permutation(prefix + numbers.charAt(i),
                    numbers.substring(0, i) + numbers.substring(i+1, n));
        }
    }
}

4. ์ฝ”๋“œํ•ด์„

<aside> <img src="https://raw.githubusercontent.com/eirikmadland/notion-icons/master/v5/icon3/ul-github.svg" alt="https://raw.githubusercontent.com/eirikmadland/notion-icons/master/v5/icon3/ul-github.svg" width="40px" /> ์ฐธ์กฐ Github Code

</aside>

// numbers์— ์„ ์–ธ๋œ ์ˆซ์ž๋กœ ๋ชจ๋“  ์ˆซ์ž ํƒ์ƒ‰
permutation("", numbers);