๋ฌธ์ ์ค๋ช
์์ ์ ์ n์ด ์ฃผ์ด์ง๋๋ค. ์ด ์ซ์๋ฅผ k์ง์๋ก ๋ฐ๊ฟจ์ ๋, ๋ณํ๋ ์ ์์ ์๋ ์กฐ๊ฑด์ ๋ง๋ ์์(Prime number)๊ฐ ๋ช ๊ฐ์ธ์ง ์์๋ณด๋ ค ํฉ๋๋ค.
0P0์ฒ๋ผ ์์ ์์ชฝ์ 0์ด ์๋ ๊ฒฝ์ฐ,
P0์ฒ๋ผ ์์ ์ค๋ฅธ์ชฝ์๋ง 0์ด ์๊ณ ์ผ์ชฝ์๋ ์๋ฌด๊ฒ๋ ์๋ ๊ฒฝ์ฐ,
0P์ฒ๋ผ ์์ ์ผ์ชฝ์๋ง 0์ด ์๊ณ ์ค๋ฅธ์ชฝ์๋ ์๋ฌด๊ฒ๋ ์๋ ๊ฒฝ์ฐ,
P์ฒ๋ผ ์์ ์์ชฝ์ ์๋ฌด๊ฒ๋ ์๋ ๊ฒฝ์ฐ,
๋จ, P๋ ๊ฐ ์๋ฆฟ์์ 0์ ํฌํจํ์ง ์๋ ์์์ ๋๋ค.
์๋ฅผ ๋ค์ด, 101์ P๊ฐ ๋ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, 437674์ 3์ง์๋ก ๋ฐ๊พธ๋ฉด 211020101011์
๋๋ค. ์ฌ๊ธฐ์ ์ฐพ์ ์ ์๋ ์กฐ๊ฑด์ ๋ง๋ ์์๋ ์ผ์ชฝ๋ถํฐ ์์๋๋ก 211, 2, 11์ด ์์ผ๋ฉฐ, ์ด 3๊ฐ์
๋๋ค. (211, 2, 11์ k์ง๋ฒ์ผ๋ก ๋ณด์์ ๋๊ฐ ์๋, 10์ง๋ฒ์ผ๋ก ๋ณด์์ ๋ ์์์ฌ์ผ ํ๋ค๋ ์ ์ ์ฃผ์ํฉ๋๋ค.) 211์ P0 ํํ์์ ์ฐพ์ ์ ์์ผ๋ฉฐ, 2๋ 0P0์์, 11์ 0P์์ ์ฐพ์ ์ ์์ต๋๋ค.
์ ์ n๊ณผ k๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. n์ k์ง์๋ก ๋ฐ๊ฟจ์ ๋, ๋ณํ๋ ์ ์์์ ์ฐพ์ ์ ์๋ ์ ์กฐ๊ฑด์ ๋ง๋ ์์์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
function isPrime(num) {
if(num <= 1) return false
for(let i = 2 ; i <= Math.sqrt(num) ; i++ ) {
if(num%i === 0) return false
}
return true
}
function solution(n, k) {
let result = 0
let zeroIdx = -1
const transNum = n.toString(k)
for(let i = 0 ; i < transNum.length ; i ++) {
// 0์ธ ๊ฒฝ์ฐ
if(!Number(transNum[i])) {
// ์ด์ 0 ๋ถํฐ ํ์ฌ์ 0 ๋ฒ์งธ ์ธ๋ฑ์ค ์ฌ์ด์ ์๊ฐ ์์์ธ์ง ํ๋ณ
const nowNum = transNum.substring(zeroIdx+1,i)
debugger
isPrime(nowNum) ? result++ : null
zeroIdx = i
}
}
// ๋ง์ง๋ง 0์ ๊ธฐ์ค์ผ๋ก ๋จ์ ์๊ฐ ์์์ธ์ง ํ๋ณ
isPrime(transNum.substring(transNum.lastIndexOf(0)+1)) ? result++ : null
return result
}
ํ๋ก๊ทธ๋๋จธ์ค k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค์ด๋ดค์ต๋๋ค.
0์ ๊ธฐ์ค์ผ๋ก ์ด๋ป๊ฒ ๋ฌธ์์ด์ ๋ถ๋ฆฌํ ๊น ์๊ฐํ๋ ๊ณผ์ ์์ String.split() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์กฐ๊ธ ๋ ์ข์ ์ฝ๋๊ฐ ๋ ์ ์์์ ๊ฒ ๊ฐ๋ค์