코딩문제풀이/프로그래머스
[Python] 후보키
코딩하는 포메라니안
2021. 9. 9. 22:26
1. 문제
2. 풀이 과정
from itertools import combinations
def solution(relation):
row = len(relation)
col = len(relation[0])
answer = set()
for i in range(1, col+1):
for com in combinations(range(col), i): #속성들의 조합
#최소성 검사
minimality = True
for a_tup in answer:
if set(a_tup) & set(com) == set(a_tup):
minimality = False
break
#최소성을 만족, 유일성 검사
if minimality:
temp = set()
for k in range(row):
temp.add(tuple(relation[k][y] for y in com))
if len(temp) == row:
answer.add(com)
return len(answer)