알고리즘
[조합] 블랙잭!
이채야채
2022. 1. 2. 22:51
연습삼아 3중 for문 말고 조합 공식에 대입해서 다른 풀이로 풀어본것.
function boringBlackjack(cards) {
//소수 구하는 함수.
function isPrime(num){
if(num ===1){
return false
}
for(let i=2; i<=num; i++){
if(num%i ===0){
if(i !== num){
return false
}
return true;
}
}
}
let result = [];
const conbination = (arr, bucket, n) => {
if (n === 0) {
console.log(bucket);
result.push(bucket)
return;
}
for (let i = 0; i < arr.length; i++) {
const choice = arr[i];
const sliceArr = arr.slice();
// 재귀
conbination(sliceArr.slice(i + 1), bucket.concat(choice), n - 1);
}
}
conbination(cards,[],3)
let count = 0;
for(let i=0; i<result.length;i++){
let element = result[i].reduce((acc,cur)=>acc+Number(cur),0)
if(isPrime(element))count++
}
return count;
}
3중 for문
function boringBlackjack(cards) {
//소수 구하는 함수.
function isPrime(num){
if(num ===1){
return false
}
for(let i=2; i<=num; i++){
if(num%i ===0){
if(i !== num){
return false
}
return true;
}
}
}
//조합 3중
let count =0;
//하나뽑는다 => 그거 빼고 거기서 골라서 뽑음 => 다음거 뽑음
for(let i=0; i<cards.length; i++){
for(let j=i+1; j<cards.length; j++){
for(let k=j+1; k<cards.length; k++){
let num = cards[i] + cards[j] + cards[k]
if(isPrime(num)) count++
}
}
}
return count;
}
아래는 combnination 을 구하는 로직!
const conbination = (arr, bucket, n) => {
if (n === 0) {
console.log(bucket);
return;
}
for (let i = 0; i < arr.length; i++) {
const choice = arr[i];
const sliceArr = arr.slice();
// 재귀
conbination(sliceArr.slice(i + 1), bucket.concat(choice), n - 1);
}
}