🤿[プログラマー]k進数から小数を求める
5987 ワード
問題の説明
正の整数n.この数値をk進数に変更する場合は、変換後の数値の小数点(Prime number)が次の条件を満たしているかを知る必要があります.
小数の両側に0がある場合、例えば0 P 0です.
少数の右側だけが0で、左には何もありません.例えばP 0です.
0 Pに示すように,少数の左側のみが0であり,右側は空白である.
Pのように少数の両側に何もなければ、
ただし、Pは小数であり、各ビット数には0は含まれません.
例えば、101はPではない.
たとえば、437674を3進数に変換すると、2110201001になります.ここで見つけた条件を満たす小数は,左から211,2,11の3つである.(211、2、11はk進ではなく10進と見なされることに注意してください.)211はP 0で見つけることができ、2は0 P 0で見つけることができ、11は0 Pで見つけることができる.
パラメータは整数nとkである.nがk進数になると、変換後の数で見つけられる上記の条件に合致する少数の数を返すために、解関数を完了します.
文字列を0で区切る方法を考える過程でString.split()メソッドを使用すると、より良いコードになるかもしれません.
正の整数n.この数値をk進数に変更する場合は、変換後の数値の小数点(Prime number)が次の条件を満たしているかを知る必要があります.
小数の両側に0がある場合、例えば0 P 0です.
少数の右側だけが0で、左には何もありません.例えばP 0です.
0 Pに示すように,少数の左側のみが0であり,右側は空白である.
Pのように少数の両側に何もなければ、
ただし、Pは小数であり、各ビット数には0は含まれません.
例えば、101はPではない.
たとえば、437674を3進数に変換すると、2110201001になります.ここで見つけた条件を満たす小数は,左から211,2,11の3つである.(211、2、11はk進ではなく10進と見なされることに注意してください.)211はP 0で見つけることができ、2は0 P 0で見つけることができ、11は0 Pで見つけることができる.
パラメータは整数nとkである.nがk進数になると、変換後の数で見つけられる上記の条件に合致する少数の数を返すために、解関数を完了します.
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()メソッドを使用すると、より良いコードになるかもしれません.
Reference
この問題について(🤿[プログラマー]k進数から小数を求める), 我々は、より多くの情報をここで見つけました https://velog.io/@kwb020312/프로그래머스-k진수에서-소수-개수-구하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol