๐ฅ๋ฌธ์ ๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/42839
๐ฅํ์ด
ํต์ฌ์ ์ฌ๊ท์ ์ผ๋ก ๋ชจ๋ ์์ด์ ๊ตฌํ๋ ํ๋ก์ธ์ค ์ ์์๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ๋ ํ๋ก์ธ์ค์ด๋ค.
์ฒ์์ ์ฌ๊ท์ ์ผ๋ก ์ ๊ทผํ๋ฉด ์๊ฐ์์ ๊ฑธ๋ฆด ๊ฒ ๊ฐ์๋๋ฐ ๊ฑธ๋ฆฌ์ง ์์๊ณ ์ค๋๋ง์ ์ฌ๊ท์ ๋ฐฉ๋ฒ์ ์ด์ฉํ์ด์ ์ฒ์์๋ ํ์ด๊ฐ ๋ฐ๋ก ์๊ฐ๋์ง ์์๋ค.
function solution(numbers) {
let primeNumbers =[]
// dfs (๊น์ด ์ฐ์ ํ์ ์ ์ )
const dfs =(picked,unpicked,selectCount)=>{
if(selectCount===1){
unpicked.forEach((n)=>{
primeNumbers.push(Number([...picked,n].join('')))
})
return
}
unpicked.forEach((n,i,origin)=>{
let newPick = [...picked,n]
let newUnpicked = [...origin]
newUnpicked.splice(i,1)
dfs(newPick,newUnpicked,selectCount-1)
})
}
// ๊ธธ์ด๊ฐ 1 ~ ๋ฌธ์์ด์ ๊ธธ์ด ๋งํผ์ ์๋ฆฟ์๋ฅผ ๊ฐ์ง๋ ์ซ์๋ฅผ ๋์ถํจ
let count = 1
while(count<=numbers.length){
dfs([],[...numbers],count)
++count
}
//์ค๋ณต ์ ๊ฑฐ
primeNumbers = new Set([...primeNumbers])
//์์๋ง ์ฐพ๋๋ค
let answerArr = Array.from(primeNumbers).filter((n)=>{
let isPrimeNumber = true
for(let i=2; i<=Math.sqrt(n); ++i){
if(n%i===0){
isPrimeNumber = false
}
}
return ( n === 1 || n===0 || !isPrimeNumber ) ? false : true
})
return answerArr.length;
}
'๐Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ์ฟผ๋์์ถ ํ ๊ฐ์ ์ธ๊ธฐ (0) | 2024.07.15 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๋คํธ์ํฌ (0) | 2024.07.13 |
ํ๋ก๊ทธ๋๋จธ์ค (JS) > ๊ฐ์ฅ ํฐ์ (0) | 2024.07.04 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ํ๋ฐฐ์์ (0) | 2024.06.29 |
ํ๋ก๊ทธ๋๋จธ์ค > ์ฑ๊ฒฉ ์ ํ ๊ฒ์ฌํ๊ธฐ (0) | 2024.06.02 |