๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

42839. ์†Œ์ˆ˜ ์ฐพ๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์†Œ์ˆ˜ ์ฐพ๊ธฐ


๋ฌธ์ œ ์œ ํ˜•๋‚œ์ด๋„๊ฑธ๋ฆฐ ์‹œ๊ฐ„ํ•ด๊ฒฐ ์œ ๋ฌด(โœ…/โŒ)
์™„์ „ํƒ์ƒ‰lv.22์‹œ๊ฐ„โœ…

์„ค๊ณ„ ๋ฐฉ๋ฒ•#

  • ๋ฌธ์ž์—ด ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง€๋ฉด ๋ชจ๋“  ์ˆœ์—ด์„ ์ฐพ๋Š” ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ๋‹ค.

  • ex) ['0', '1', '1'] => [ '0', '1', '1', '01', '01', '10', '11', '10', '11', '011', '011', '101', '110', '101', '110' ]

  • ๋ชจ๋“  ์ˆœ์—ด์„ Number ํ•จ์ˆ˜๋กœ ์ˆซ์ž๋กœ ๋งŒ๋“ ๋‹ค. (์ด ๊ณผ์ •์—์„œ ์•ž์˜ 0์ด ์‚ฌ๋ผ์ง„๋‹ค.)

  • ๊ฐ ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜์ด๋ฉด ์†Œ์ˆ˜ Set์— ์ถ”๊ฐ€ํ•œ๋‹ค. (์ด ๊ณผ์ •์—์„œ ์ค‘๋ณต์ด ์ œ๊ฑฐ๋œ๋‹ค.)

์ฝ”๋“œ#

function solution(numbers) {    const primeNumbers = new Set();
    for (let i = 1; i <= numbers.length; i++) {        getPermutation(numbers.split(''), i)            .map(Number)            .forEach((number) => {                if (isPrime(number)) {                    primeNumbers.add(number);                }            });    }
    return primeNumbers.size;}
function getPermutation(arr, n) {    if (n === 1) {        return arr;    }
    return arr.reduce((perms, cur, idx) => {        getPermutation(            [...arr.slice(0, idx), ...arr.slice(idx + 1)],            n - 1,        ).forEach((perm) => {            perms.push(cur + perm);        });
        return perms;    }, []);}
function isPrime(num) {    if (num < 2) return false;    if (num === 2) return true;    for (let i = 2; i <= Math.sqrt(num); i++) {        if (num % i === 0) return false;    }    return true;}

์‹œ๊ฐ„ ๋ณต์žก๋„#

  • ์ˆœ์—ด : O(N!)

์–ด๋ ค์› ๋˜ ์ #

  • ๋ชจ๋“  ์ˆœ์—ด ์ฐพ๊ธฐ, ์†Œ์ˆ˜ ์ฐพ๊ธฐ, ์ค‘๋ณต ์ œ๊ฑฐ, ์•ž์˜ 0 ์ œ๊ฑฐ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ• ์ง€ ํ•ฉ์„ฑํ• ์ง€ ๊ณ ๋ฏผ์ด ๊ธธ์–ด์กŒ๋‹ค.

  • ๋ชจ๋“  ์ˆœ์—ด ์ฐพ๊ธฐ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ๋‹ค.

  • ๋ชจ๋“  ์ˆœ์—ด์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ํ—ˆ์šฉํ•  ๊ฒƒ์ธ์ง€ ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ๋‹ค.

    • ์ œํ•œ ์‚ฌํ•ญ์„ ๋ณด๊ณ  ์–ด๋Š ์ •๋„์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ํ†ต๊ณผํ•  ๊ฒƒ์ธ์ง€๊ฐ€ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ์ง€ ๊ถ๊ธˆํ•˜๋‹ค.
  • 10์ž๋ฆฌ ์ˆ˜๊นŒ์ง€ ํ…Œ์ŠคํŠธ ํ•ด๋ณด์•˜๋Š”๋ฐ, ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ n ๊นŠ์ด๋งŒํผ ๋“ค์–ด๊ฐ”๋‹ค๊ฐ€ ๋น ์ ธ๋‚˜์™€์„œ ๊ทธ๋Ÿฐ์ง€ stack overflow๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋‹ค.

  • 10์ž๋ฆฌ ์ˆ˜ ํ…Œ์ŠคํŠธ๊ฐ€ 8๋ถ„ ์ •๋„ ๊ฑธ๋ ธ๋‹ค.

2020-10-08-42839-์†Œ์ˆ˜-์ฐพ๊ธฐ-image-0

์ฐธ๊ณ ์ž๋ฃŒ#