JavaScript練習[アルゴリズム]で小数-プログラマーコードテストを求める
9520 ワード
この問題は数字のある配列問題で、その中から3つの数字を選んで加算し、これらの数字が小数であるかどうかを判別し、これらの数字が全部で何個あるかを求める.
この問題の解決策は一見大まかな考えがあり、実行に移す.私が考えている方法は組み合わせを求める方法を利用することです.与えられた配列から3つ抽出し,加算してすべて1つの配列に格納する.そしてその配列を回って小数かどうかを判断し、答えを返します.素数を求める方式は2分から対応数の平方根まで、素数であるか否かを判別する方式である.また,組合せを実現しようとしたが,思ったほど良くなく,最終的には約ブログを参照した.
この問題の解決策は一見大まかな考えがあり、実行に移す.私が考えている方法は組み合わせを求める方法を利用することです.与えられた配列から3つ抽出し,加算してすべて1つの配列に格納する.そしてその配列を回って小数かどうかを判断し、答えを返します.素数を求める方式は2分から対応数の平方根まで、素数であるか否かを判別する方式である.また,組合せを実現しようとしたが,思ったほど良くなく,最終的には約ブログを参照した.
문제풀이
function solution(nums) {
var answer = 0;
let threeNums = [];
let arr = getCombinations(nums, 3);
for(let i=0; i<arr.length;i++){
threeNums.push(arr[i][0]+arr[i][1]+arr[i][2])
}
for(let i=0; i<threeNums.length;i++){
if(isPrime(threeNums[i])){
answer++;
// console.log(threeNums[i])
}
}
return answer;
}
const getCombinations = function (arr, selectNumber) {
const results = [];
if (selectNumber === 1) return arr.map((value) => [value]);
arr.forEach((fixed, index, origin) => {
const rest = origin.slice(index + 1);
const combinations = getCombinations(rest, selectNumber - 1);
const attached = combinations.map((combination) => [fixed, ...combination]);
results.push(...attached);
});
return results;
}
function isPrime(prime){
for(let i=2; i<=Math.sqrt(prime);i++){
// console.log(`[${prime}] : ${i}`)
if(prime%i === 0){
return false;
}
}
return true;
}
Reference
この問題について(JavaScript練習[アルゴリズム]で小数-プログラマーコードテストを求める), 我々は、より多くの情報をここで見つけました https://velog.io/@cbsky1234/알고리즘-소수-구하기-프로그래머스-코딩테스트-연습-by-JavaScriptテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol