본문 바로가기

알고리즘 풀이

[종만북] 소풍

찾아봤는데 자바스크립트 코드는 없네. 일단 책보고 자바스크립트로 변환한 것만 쓰고 내가 왜 못풀었는지, 책에 나와있는 내용을 설명하는건 나중에 하자

 

// let n = 4;

// let array = [

// [false, true, true, true],

// [true, false, true, true],

// [true, true, false, true],

// [true, true, true, false]

// ]

 

let n = 6;

let array = [

[false, true, true, false, false, false],

[true, false, true, true, true, false],

[true, true, false, true, true, false],

[false, true, true, false, true, true],

[false, true, true, true, false, true],

[false, false, false, true, true, false],

]

const taken = [false, false];

 

function countParings(taken) {

let res = 0;

let firstFree = -1;

 

for (let i = 0; i < n; i++) {

if (!taken[i]) {

firstFree = i;

break;

}

}

 

if (firstFree === -1) return 1;

 

for (let pairWith = firstFree + 1; pairWith < n; pairWith++) {

if (!taken[pairWith] && array[firstFree][pairWith]) {

taken[firstFree] = taken[pairWith] = true;

res += countParings(taken);

taken[firstFree] = taken[pairWith] = false;

}

}

 

return res;

}

 

console.log(countParings(taken))