https://school.programmers.co.kr/learn/courses/30/lessons/42890#
from itertools import combinations
def solution(relation):
ROW = len(relation)
COL = len(relation[0])
columns = [i for i in range(COL)]
answer = 0
#input: 선별된 컬럼들의 리스트
def check_min(cols):
#하나를 제외했을 때 유일성이 깨지는 지 보자.
if len(cols) == 1:
return True
for i in range(len(cols)):
unique_set = set()
test_cols = cols[:i] + cols[i+1:]
s = ''
for r in range(ROW):
for c in test_cols:
s += relation[r][c]
unique_set.add(s)
s = ''
if ROW == len(unique_set):
return False
return True
for i in range(COL):
combs = combinations(columns, i)
for comb in combs:
cols = list(comb)
unique_set = set()
for r in range(ROW):
s = ''
for col in cols:
s += relation[r][col]
unique_set.add(s)
s = ''
if ROW == len(unique_set):
if check_min(cols):
# print('cols: ', cols)
answer += 1
return answer if answer > 0 else 1