집합

2022. 11. 8. 12:51

부분집합 구하기

 

from itertools import combinations 

arr = [1, 2, 3]
result = []
for i in range(len(arr)+1):
  result = result+list(combinations(arr,i))
# result
[(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)]

파이썬의 itertools 라이브러리의 combinations 모듈을 사용.

combinations는 리스트와 부분집합의 길이를 인자로 받고 combinations 객체를 반환한다.

combinations 객체를 list로 형변환하면 부분집합을 얻을 수 있다.

 

 

교집합 구하기

 

set1 = set([1, 2, 3, 4])
set2 = set([3, 4, 5, 6])

print(set1 & set2)
print(set1.intersection(set2))
# 출력 결과
{3, 4}
{3, 4}

 

파이썬의 set 자료형으로 간단하게 구현가능

 

 

합집합 구하기

 

set1 = set([1, 2, 3, 4])
set2 = set([3, 4, 5, 6])

print(set1 | set2)
print(set1.union(set2))
# 출력 결과
{1, 2, 3, 4, 5, 6}
{1, 2, 3, 4, 5, 6}

교집합과 마찬가지로 파이썬의 set 자료형으로 간단하게 구현가능

 

 

차집합 구하기

 

set1 = set([1, 2, 3, 4])
set2 = set([3, 4, 5, 6])

print(set1 - set2)
print(set1.difference(set2))
# 출력 결과
{1, 2}
{1, 2}

파이썬의 set 자료형으로 간단하게 구현가능

 

 

대칭 차집합(XOR) 구하기

 

set1 = set([1, 2, 3, 4])
set2 = set([3, 4, 5, 6])

print(set1 ^ set2)
# 출력 결과
{1, 2, 5, 6}

파이썬의 set 자료형으로 간단하게 구현가능

 

 

다중 집합의 합집합 구하기

 

def make_union(A, B):
	A_copy = A.copy()
	union = A.copy()
    
	for element in B:
		union.append(element) if element not in A_copy else A_copy.remove(element)

	return union

리스트 A와 B를 매개변수로 전달하면 합집합 리스트 union을 반환한다.

 

다중 집합의 교집합 구하기

 

def make_intersection(A, B):
	A_copy = A.copy()
	intersection = []
        
	for element in B:
		if element in A_copy:
			A_copy.remove(element)
			intersection.append(element)
        
	return intersection

리스트 A와 B를 매개변수로 전달하면 교집합 리스트 intersection을 반환한다. 

'코딩테스트 > 메모' 카테고리의 다른 글

[자바스크립트] 집합(초집합, 합집합, 교집합, 차집합, 멱집합)  (0) 2023.05.17
진수 변환  (0) 2022.11.08
  (0) 2022.11.08
소인수분해  (0) 2022.10.19
피보나치 수  (0) 2022.10.13

BELATED ARTICLES

more