小数点を検索
10531 ワード
問題の説明
一桁と書かれた紙片が散らばっている.ばらばらの紙切れを貼って、いくつかの小数点を作ることができることを見たいです.
各紙片の数字の文字シリアル番号を指定すると、紙片で作成できるいくつかの数を返すための解法関数を完了します.
せいげんじょうけん
numbersは、長さが1または7未満の文字列です.
numbersは0から9まで数字で構成されています.
「013」とは、0から3の数字の紙切れが散らばっていることを意味します.
I/O例
numbers return
"17" 3
"011" 2
I/O例説明
例1
[1,7]小数[7,17,71]を作成できます.
例2
[0,1,1]は小数点を作成することができる[1101].
11と011は同じ数字と見なされます.
1.すべての数値の組合せを順番に参照->数値セットのみをスキャン
2.集合中の数字の組み合わせを小数で判別し、trueの場合++
学識小数点を探す方法は、エラトスドネスのふるいのほかにもあります. シーケンスnpr 1に詳しい.
一桁と書かれた紙片が散らばっている.ばらばらの紙切れを貼って、いくつかの小数点を作ることができることを見たいです.
各紙片の数字の文字シリアル番号を指定すると、紙片で作成できるいくつかの数を返すための解法関数を完了します.
せいげんじょうけん
numbersは、長さが1または7未満の文字列です.
numbersは0から9まで数字で構成されています.
「013」とは、0から3の数字の紙切れが散らばっていることを意味します.
I/O例
numbers return
"17" 3
"011" 2
I/O例説明
例1
[1,7]小数[7,17,71]を作成できます.
例2
[0,1,1]は小数点を作成することができる[1101].
11と011は同じ数字と見なされます.
function solution(numbers) {
let answer = 0;
const n = numbers.length;
const totalNumbers = new Set(); // Set 을 사용해서 반복되는 것은 포함 x
// nPr: 순열 전체 탐색 1 < r <= n
for (let r = 1; r <= n; r++) {
const copy = new Array(r).fill(0);
const selected = new Array(n).fill(0);
permutation(0, numbers, copy, selected, r, n, totalNumbers);
}
// Set을 반복문으로 탐색
for (let val of totalNumbers.values()) {
if (isPrime(val)) {
answer++;
}
}
return answer;
}
// 순열 함수
const permutation = (idx, numbers, copy, selected, r, n, totalNumbers) => {
if (idx == r) {
const num = Number(copy.join(""));
totalNumbers.add(num);
return;
}
for (let i = 0; i < n; i++) {
if (selected[i] === 0) {
selected[i] = 1;
copy[idx] = numbers[i];
permutation(idx + 1, numbers, copy, selected, r, n, totalNumbers);
selected[i] = 0;
}
}
};
// 소수 판별
function isPrime(num) {
// 0, 1의 경우 fast return
if (num === 1 || num === 0) return false;
// num 의 제곱근 범위까지 반복문 돌려서 나눠서 나머지가 0인지 탐색
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) return false;
}
return true;
}
解の順序1.すべての数値の組合せを順番に参照->数値セットのみをスキャン
2.集合中の数字の組み合わせを小数で判別し、trueの場合++
学識
Reference
この問題について(小数点を検索), 我々は、より多くの情報をここで見つけました https://velog.io/@jaegyeongkim/소수-찾기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol