programmers.co.kr/learn/courses/30/lessons/42890
from itertools import combinations
def solution(relation):
com=[]
first=[]
for i in range(1,len(relation[0])+1):
com.extend(combinations(range(len(relation[0])), i))
for keys in com:
tmp=[tuple([item[key] for key in keys]) for item in relation]
if len(set(tmp))==len(relation):
first.append(keys)
answer=set(first)
for i in range(len(first)):
for j in range(i+1, len(first)):
if len(first[i]) == len(set(first[i])&set(first[j])):
# discard로 할 경우 first[j]가 없는 경우에도 오류를 띄우지 않아. remove는 오류나
answer.discard(first[j])
print(first[i], first[j])
return len(answer)
참고!
tuple과 list의 차이
1. list는 [] , tuple은 ()
2. list는 생성, 수정, 삭제 가능
tuple은 생성, 수정, 삭제 불가능
위에서 list대신 tuple을 사용한 이유
-> 뒤에서 set형식으로 바꿔서 중복을 없앨건데, list경우 set(list)을 하면
TypeError: unhashable type: 'list'
라는 에러가 뜬다. 그래서 list대신 tuple로 해!
'코딩 테스트 > 문제 풀기' 카테고리의 다른 글
[프로그래머스] 압축 (0) | 2021.04.02 |
---|---|
[프로그래머스] 방금그곡 (0) | 2021.03.31 |
[프로그래머스] 오픈채팅방 (0) | 2021.03.30 |
[프로그래머스] 프렌즈4블록 (0) | 2021.03.30 |
[프로그래머스] 뉴스 클러스터링 (0) | 2021.03.30 |
댓글