프로그래머스 #javascript - 후보키

SSO·2020년 5월 11일
0

프로그래머스 Lv2

목록 보기
42/46

문제

풀이

// 해결 못해서 다른사람의 풀이 보고 공부***
// 아직 완벽히 이해X

이하 다른 사람의 풀이

function solution(relation) {
    const cols = relation[0].length
    const rows = relation.length
    const sets = 1 << cols
    const sk = new Set()

    for (let i=1; i<sets; i++) {
        const tmp = new Set()
        for (let row=0; row<rows; row++) {
            let key = ''
            for (let col=0; col<cols; col++) {
                if (i & (1 << col)) key = String(key) + String(relation[row][col])
            }
            tmp.add(key)
        }
        if (tmp.size === rows) sk.add(i)
    }

    for (let i of sk) {
        for (let j of sk) {
            if (i >= j) continue
            if ((i & j) === i) sk.delete(j)
        }
    }

    console.log(Array.from(sk).map(e => e.toString(2)))

    return sk.size
}

더 생각해보기

ES6 모듈 - new Set()
The Set object lets you store unique values of any type, whether primitive values or object references.

튜플(tuple)
셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음

비트연산자

참고사항

profile
happy

0개의 댓글