컴공생의 다이어리
[프로그래머스] 후보키 - 파이썬(Python) 본문
[프로그래머스] 후보키 - 파이썬(Python)
from itertools import combinations
def solution(relation):
len_key = len(relation[0])
candidate_key = []
for i in range(1, len_key + 1):
for combi in combinations(range(len_key), i): # 후보키가 될수 있는 key들의 전체 조합
temp = list()
for r in relation:
curr = [r[c] for c in combi] # 현재 후보키 조합에 해당하는 튜플 데이터
if curr in temp: # 유일성을 만족하지 않는 경우
break
else:
temp.append(curr)
else:
for ck in candidate_key:
if set(ck).issubset(set(combi)): # 최소성을 만족하지 않는 경우
break
else:
candidate_key.append(combi)
return len(candidate_key)
https://programmers.co.kr/learn/courses/30/lessons/42890
728x90
반응형
'Development > Algorithm & Coding Test' 카테고리의 다른 글
[프로그래머스] 게임 맵 최단거리 - 파이썬(Python) (0) | 2022.06.15 |
---|---|
[프로그래머스] 캐시 - 파이썬(Python) (0) | 2022.06.14 |
[프로그래머스] 실패율 - 파이썬(Python) (0) | 2022.06.12 |
[프로그래머스] 오픈채팅방 - 파이썬(Python) (0) | 2022.06.11 |
[프로그래머스] 방문 길이 - 파이썬(Python) (0) | 2022.06.09 |
Comments