본문 바로가기
Algorithm/Programmers

[PRGRMS]42890번: 후보키

by BAYABA 2022. 3. 9.

문제: https://programmers.co.kr/learn/courses/30/lessons/42890


시뮬레이션 문제입니다.

 

1. 컴비네이션을 통해 1개 ~ 컬럼의 사이즈만큼 뽑는 경우의 수를 생성합니다.

2. 하나의 경우의 수 == 후보키가 되고 이 후보키를 통해 모든 튜플을 식별할 수 있는지 확인합니다.

3. 2번을 만족한다면 이 후보키가 슈퍼키인지 유무를 확인합니다.

 

<슈퍼키 여부 판단 방법>

슈퍼키 여부 판단은 비트의 &(and) 연산을 적용합니다.

 

1. 정답에 포함되는 candidateKey 

2. 현재 슈퍼키 여부를 검증해야하는 정답 후보 nowKey

 

boolean isSuperkey = ((candidateKey & nowKey) == candidateKey)

코드: https://github.com/cotchan/algorithm/blob/main/PRGRMS/%ED%9B%84%EB%B3%B4%ED%82%A4.java