코딩문제풀이/프로그래머스

[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)

'코딩문제풀이 > 프로그래머스' 카테고리의 다른 글

[Python] 길 찾기 게임  (0) 2021.09.11
[Python] 무지의 먹방  (0) 2021.09.10
[Python] 실패율  (0) 2021.09.08
[Python] 오픈채팅방  (0) 2021.09.08
[Python] 방의 개수  (0) 2021.09.05