[ํ๋ก๊ทธ๋๋จธ์ค][JS / Javascript] ์์ ์ฐพ๊ธฐ
https://school.programmers.co.kr/learn/courses/30/lessons/42839
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
ํ์๋ฆฌ ์ซ์๊ฐ ์ ํ ์ข
์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์์ต๋๋ค. ํฉ์ด์ง ์ข
์ด ์กฐ๊ฐ์ ๋ถ์ฌ ์์๋ฅผ ๋ช ๊ฐ ๋ง๋ค ์ ์๋์ง ์์๋ด๋ ค ํฉ๋๋ค.
๊ฐ ์ข
์ด ์กฐ๊ฐ์ ์ ํ ์ซ์๊ฐ ์ ํ ๋ฌธ์์ด numbers๊ฐ ์ฃผ์ด์ก์ ๋, ์ข
์ด ์กฐ๊ฐ์ผ๋ก ๋ง๋ค ์ ์๋ ์์๊ฐ ๋ช ๊ฐ์ธ์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
function solution(numbers) {
const INF = 10000000;
// ์
๋ ฅ๊ฐ์ ๋ค์ด์๋ ์์ ์ข
๋ฅ์ ๊ฐฏ์
const numberArr = [0,0,0,0,0,0,0,0,0,0];
for(let i of numbers) {
numberArr[parseInt(i)]++;
}
// prime[i] = i๊ฐ ์์์ธ์ง ์ฌ๋ถ
let prime = [];
for(let i=0; i<INF; i++) {
prime.push(true);
}
prime[0] = prime[1] = false;
for(let i=2; i<INF; i++) {
if(!prime[i]) {
continue;
}
for(let j=i*i; j<INF; j+=i) {
prime[j] = false;
}
}
// primeNum ๋ฐฐ์ด ๋๋ฉด์ ํด๋น ์์๊ฐ ๋ง๋ค์ด์ง ์ ์๋์ง ์นด์ดํธ
function makable(target, numbers) {
for(let i of target) {
const n = parseInt(i);
numbers[n]--;
if(numbers[n]<0) {
return false;
}
}
return true;
}
let ans = 0;
for(let i in prime) {
if(!prime[i] || i.length > numbers.length) {
continue;
}
if(makable(i, [...numberArr])) {
ans++;
}
}
return ans;
}
์๋ฐ์คํฌ๋ฆฝํธ ํน์ฑ๋๋ฌธ์ธ์ง๋ ๋ชฐ๋ผ๋ ์๋นํ ๋๋ฆฌ๋ค..
c++๋ก ์๋ํด๋ณด๊ฑฐ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์๋ด์ผํ ๋ฏ