1. 문제 접근 방법
- 내 접근보다 더 나은 접근 방법을 학습해서 정리하는 글이다.
이 풀이를 참고함으로, 파이썬 자료구조를 어떻게 활용해서 문제를 풀 수 있는지를 알게 되었다.
적절한 자료구조를 활용한다는 것은 문제를 효율적으로 푸는데 있어서 매우 중요한 문제이다.
-> 앞으로 이러한 방향으로의 학습과 적용을 지속적으로 반복해야 한다
- combinations를 통해서 조합을 생성할 수 있다
- relation을 순회하면서, 해당하는 값들을 선택해서 tmp 배열을 생성할 수 있다
- set(x).issubset(set(i))를 통해서 하나가 다른 하나의 subset인지 여부를 확인할 수 있다.
from itertools import combinations
def solution(relation):
row = len(relation)
col = len(relation[0])
#가능한 속성의 모든 인덱스 조합
combi = []
for i in range(1, col+1):
combi.extend(combinations(range(col), i))
unique = []
for i in combi:
tmp = [tuple([item[key] for key in i]) for item in relation]
if len(set(tmp)) == row: # 유일성
put = True
for x in unique:
if set(x).issubset(set(i)): # 최소성
put = False
break
if put: unique.append(i)
return len(unique)
'PS' 카테고리의 다른 글
마법사 상어와 토네이도 [삼성 기출] (1) | 2023.10.06 |
---|---|
양과 늑대 [2022 KAKAO BLIND RECRUITMENT] (1) | 2023.10.04 |
양궁대회 2 [2022 KAKAO BLIND RECRUITMENT] (1) | 2023.10.04 |
표현 가능한 이진 트리 [2023 KAKAO BLIND RECRUITMENT] (1) | 2023.10.01 |
길 찾기 게임 [2019 KAKAO BLIND RECRUITMENT] (0) | 2023.10.01 |