강의로 돌아가기
OREO

문제질문입니다.

테스트케이스 절반은 실패하는데 어디서 잘못된건지모르겠습니다.

작성중인 코드―solution.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
function solution(relation) {
    var answer = 0;
    var max_bit = 1 << relation[0].length ;
    var candidate_list =[];
    for(var i = 0 ; i < max_bit ; i++){
        var list = [];
        for(var j=1; j < max_bit; j+=j){
            if( ( i  &  j) && (list.length) < 1){
                relation.forEach(function(item){
                        list.push(item[get_index(j)]+' ');
                   })
            }else if(( i  &  j) && (list.length) > 0){
                for(var index=0 ; index < relation.length; index++){
                    list[index] = list[index].concat(relation[index][get_index(j)]+' ');
                }
            }
            }
            if(check_candidate(list)){
                candidate_list.push(i);
            }
        }
    return minalize_candidatekey(candidate_list,answer).length;
}
function minalize_candidatekey(candidate_list){
    for(var i =0; i< candidate_list.length-1; i++){
        for(var j =i+1; j < candidate_list.length; j++){
            if(candidate_list[i] & candidate_list[j]){
                candidate_list[j]=0;
            }
        }
    }
    return candidate_list.filter(n=>n);
}
function get_index(num){
    var cnt=0;
    while(num > 1){
        num/=2;
        cnt++
    }
    return cnt;
}
function check_candidate(list){
    var is_candidate = true;
    for(var i =0; i<list.length-1; i++){
        for(var j =i+1; j<list.length; j++){
            if(list[i] === list[j]){
                is_candidate=false;
            }
        }
    }
    if(list.length===0){
        is_candidate=false;
    }
    return is_candidate;
}
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.