Algorithm/문제

algospot. PICNIC (미해결)

Yuclid 2021. 1. 10. 02:06

코드

 const pros = input.slice(1,input.length).map(v=>v.split(' ').map(v=>Number(v)));

 for(let i=0; i<pros.length; i+=2){
     const arr = pros.slice(i,i+2);
     let answer = 0;
     const number = arr[0];
     const mate = arr[1];

     dfs(0,[]);


     function dfs(index, line){
         if(line.length === number[0]){
             answer++;
             return ;
         }
         for(let i=index;i<mate.length;i+=2){
             if(dupCheck(line, [mate[i], mate[i+1]] )) {
                 line.push(mate[i]);
                 line.push(mate[i + 1]);
                 dfs(i + 2, line);
                 line.pop();
                 line.pop();
             }
         }
     }
     // console.log(`${i+1}번째 케이스 끝 : ${answer}`);
     console.log(answer);
 }


 //중복 체크 함수
 function dupCheck(arr1, [first, second]){
     return !(arr1.includes(first) || arr1.includes(second));
 }

뭐가 틀렸는지 모르겠다..

테스트 케이스는 잘 되고 차근차근 살펴봐도 틀릴 부분이 없는 것 같은데