프로그래밍/python
[python] set 자료형 활용하여 부분집합 구하기 / 부분집합인지 확인하는 방법
잇서니
2019. 9. 6. 20:14
반응형
python 부분집합 구하기
부분집합 개념을 쉽게 풀어보자
- 어떤 덩어리(a)가 다른 덩어리(b) 안에 포함되어 있는가?
- a={ "apple", "banana"}
- b={"apple", "banana", "orange"}
- 어떤 덩어리(a)와 다른 덩어리(b)의 교집합이 어떤 덩어리(a)와 같은가? (a의 사이즈가 더 작을 때)
python 부분집합인지 확인하기
어떤 덩어리(a)와 다른 덩어리ㅎ(b)의 교집합이 어떤 덩어리(a)와 같은가? 관점으로 접근해보겠습니다.
def check (a,b):
# 교집합 개념을 사용하기 위해 리스트인 a, b를 set 자료형으로 변경한다.
s1=set(a)
s2=set(b)
if s1 ==s1.intersection(s2) :
print("a는 b의 부분집합입니다!")
elif s2==s1.intersection(s2):
print("b는 a의 부분집합입니다")
python 부분집합 구하기
결국 [[조합 (combinations)]] 을 구하는 것입니다. 0개쌍, 1개쌍, 2개쌍 , .... n개쌍으로 이루어진 조합을 모두 구하면 됩니다. 0개쌍은 공집합을 의미합니다.
from itertools import combinations
a=[1,2,3]
result=[]
for i in range(0,len(a)+1):
c=combinations(a,i)
result.extend(c)
print(result)
#[(),(1),(2),(3),(1,2),(1,3),(2,3),(1,2,3)]
반응형