코딩하는 포메라니안 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)