TIL 64|JavaScriptアルゴリズム(プログラマの次の大きな数字JS)
3485 ワード
問題のショートカット
問題の概要
条件nの次の大きな数字はnより大きい自然数である.
条件nの次の大きな数字とnがバイナリに変換されたときの1つの数は同じである.
条件nの次の大きな数字は条件1,2を満たす最小の数字である.
たとえば、78(1001110)の次の大きな数字は83(1010011)です.
自然数nがパラメータであると与えられたときにnの次の大きな数を返す解関数を完成する.
方法
初めて)ルールを見つけようとします.1の個数を同じにして、より大きな数にするために、2番目の位置1の位置を左に移動し、1,2番目の位置1を除いて、残りの1が右側から順に位置を埋め尽くすと、条件3が満たされる.いずれも1からなるバイナリ数であれば、1,2番目の「1」の間に0を追加する数が増えるため、コードが記述される.結果は問題で示した例にのみ合格し,正確性テストで誤った答えが現れた.
2回目の試み)はブルートフォース方式で説明した.nを1つ増やして2進数に変換し、最初の2進数nの1と等しい数が現れるまで比較する.
構文の使用
特定の文字(列)を検索します.match(正規表現) を使用特定文字(列)の数:.match(正規表現).length バイナリ<>10進数変換:target.toString(2), parseInt(target,2)
参考資料:バイナリの変換方法 正しいコード
問題の概要
条件nの次の大きな数字はnより大きい自然数である.
条件nの次の大きな数字とnがバイナリに変換されたときの1つの数は同じである.
条件nの次の大きな数字は条件1,2を満たす最小の数字である.
たとえば、78(1001110)の次の大きな数字は83(1010011)です.
自然数nがパラメータであると与えられたときにnの次の大きな数を返す解関数を完成する.
方法
初めて)ルールを見つけようとします.1の個数を同じにして、より大きな数にするために、2番目の位置1の位置を左に移動し、1,2番目の位置1を除いて、残りの1が右側から順に位置を埋め尽くすと、条件3が満たされる.いずれも1からなるバイナリ数であれば、1,2番目の「1」の間に0を追加する数が増えるため、コードが記述される.結果は問題で示した例にのみ合格し,正確性テストで誤った答えが現れた.
2回目の試み)はブルートフォース方式で説明した.nを1つ増やして2進数に変換し、最初の2進数nの1と等しい数が現れるまで比較する.
構文の使用
特定の文字(列)
参考資料:バイナリの変換方法
function solution(n) {
let count = 0;
count = binCount(n);
while(1){
if(binCount(++n) === count){
return n;
}
}
return answer;
}
function binCount(num){
const bin = num.toString(2)
let countOne = bin.match(/1/gi).length;
return countOne;
}
Reference
この問題について(TIL 64|JavaScriptアルゴリズム(プログラマの次の大きな数字JS)), 我々は、より多くの情報をここで見つけました https://velog.io/@mygomi/TIL-64-자바스크립트로-알고리즘-프로그래머스-다음-큰-숫자-JSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol