집합은 기본적으로 중복을 허용하지 않는다. 따라서 다중집합에 관한 문제는 리스트를 사용한다.
a = [1, 1, 2, 3, 4, 6]
b = [1, 2, 3, 3, 4, 5]
다중 집합 사이의 연산은?
다중 합집합의 경우 연산 전에 집합을 복사해서 이용하기로 하자.
a = [1, 1, 2, 3, 4, 6]
b = [1, 2, 3, 3, 4, 5]
# 다중 합집합
temp = lst1.copy()
union = lst1.copy()
for i in lst2:
if i not in temp:
union.append(i)
else:
temp.remove(i)
# 다중 교집합
intersection = []
for i in lst2:
if i in lst1:
lst1.remove(i)
intersection.append(i)
union = [1, 1, 2, 3, 3, 4, 5, 6]
intersection = [1, 2, 3, 4]
아니면 그냥 원소들을 하나씩 가지고 와서 두 집합에서 합집합인 경우 max(), 교집합인 경우 min()을 이용하여 하면 된다.
a = [1, 1, 2, 2, 3]
b = [1, 2, 2, 4, 5]
gyo = set(a) & set(b)
hap = set(a) | set(b)
# 다중 합집합
union = []
for i in hap:
for j in range(max(a.count(i),b.count(i))):
union.append(i)
# 다중 교집합
intersection = []
for i in gyo:
for j in range(min(a.count(i),b.count(i))):
intersection.append(i)
union = [1, 1, 2, 2, 3, 4, 5]
intersection = [1, 2, 2]
'코딩테스트 with Python' 카테고리의 다른 글
문자열 함수 및 정규표현식 (0) | 2022.01.29 |
---|---|
[파이썬] 빈 리스트 확인 하는법 (0) | 2022.01.06 |
[파이썬] itertools ,순열, 조합 등 (0) | 2022.01.01 |
[파이썬] Counter 객체 (0) | 2021.12.28 |
[파이썬] 문자열 method replace() (0) | 2021.12.28 |