practivceAlgorithm/programmers
[Programmers][Python] Kakao 2019 후보키
findTheValue
2021. 10. 28. 20:02
조합 검사 중 조건을 만족할 시 조합의 부분조합을 구해 중복되는것이 있으면 세주지 않았습니다.
from itertools import combinations
def solution(relation):
n = len(relation[0])
cnt = 0
checked = set()
for i in range(1, n + 1):
for comb in combinations([k for k in range(n)], i):
dicts = set()
tmp = []
for row in relation:
tmp.append(''.join(row[each] for each in comb))
flag = 0
for c in tmp:
if flag: break
if c not in dicts:
dicts.add(c)
else:
flag = 1
break
if not flag:
flag = 0
for i in range(1, len(comb)):
if flag: break
for com in combinations(list(comb), i):
if com in checked:
flag = 1
break
if not flag:
checked.add(comb)
cnt += 1
return cnt