반응형
카카오 2019 블라인드 코딩테스트 문제입니다. 데이터베이스의 후보키의 수를 추출하는 문제입니다.
문제
1. relations = [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],
["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]]
=> 2 ([0], [1,2])
풀이
먼저 유일성을 확인하기 위해 칼럼의 모든 부분 집합을 생성해야 합니다. 부분 집합을 만드는 것은 dfs로 구현할 수 있고 만든 부분 집합이 유일성을 만족하는 지 확인합니다. 그 후, 유일성을 만족하는 부분 집합에 대해 최소성 검증을 하여 최소성을 만족하는 부분 집합만 추출하면 되는 문제입니다.
kaggle.com의 notebook으로 작성한 풀이는 다음과 같습니다.
홍머스 정리
- 난이도: 중, 모든 부분 집합을 빠르게 구하는 것이 관건
- dfs 말고 bit 연산으로도 해결할 수 있다.
반응형
'Computer > Coding Test' 카테고리의 다른 글
코딩테스트 문제 (20) - 유효한 팰린드롬 (0) | 2021.03.01 |
---|---|
코딩테스트 문제 (19) - 무지의 먹방 라이브 (0) | 2021.03.01 |
코딩테스트 문제 (17) - 실패율 (0) | 2021.02.27 |
코딩테스트 문제 (16) - 뉴스 클러스터링 (0) | 2021.02.26 |
코딩테스트 문제 (15) - 캐시 (0) | 2021.02.26 |