코딩테스트 with Python
다중 집합
재키재키
2022. 1. 21. 17:24
집합은 기본적으로 중복을 허용하지 않는다. 따라서 다중집합에 관한 문제는 리스트를 사용한다.
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]