프로그래머스 - 후보키 [못품]

Lumi·2021년 12월 8일
0

알고리즘

목록 보기
55/59
post-thumbnail
function solution(realtion) {
  const cols = realtion[0].length;

  const check = 1 << cols;

  const answer = new Set();

  for (let i = 1; i < check; i++) {
    let temp = realtion.map((x) =>
      x.filter((_, col) => i & (1 << col)).join(" ")
    );
    const set = new Set(temp);

    if (temp.length === set.size) {
      answer.add(i);
    }
  }
  for (let x of answer) {
    for (let y of answer) {
      if (x >= y) continue;
      if ((x & y) === x) {
        answer.delete(y);
      }
    }
  }
}

일단 2단계가 맞는지..ㅠㅠ

구글링을 통해 받아온 코드이다.

기본적으로 나와 비슷한 생각으로 해결을 하셨다.

나같은 경우에도 특정 변수에 값을 넣은뒤에 최소성을 처리해 주려고 했는데

나는 최소성을 해결하는 부분을 짜지 못해서 실패 하였다...

answer에 저장되는 값은 나와는 많이 다르지만 틀은 같다는 것이다.

이분은 비트 연산을 활용 하셨다고 한다.

그러기 때문에 answer변수에 i값을 넣었다.

그후 비트연산을 통해서 최소성을 해결하였다고 하셨는데

나는 비트연산을 써본적이 없어서 잘 이해를 하지 못했다 ㅠㅠ

이 문제를 통해서 set과 비트연산에 대해서 알게 되었고 후에 다시 풀어볼 것이다!

profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글