05. 다섯 번째 수업: 집합의 연산 ①교집합과 합집합 (Intersection & Union)

숫자(자연수, 정수)의 세계에 덧셈($+$), 뺄셈($-$) 같은 사칙연산이 있다면, 집합(Set)의 세계에도 데이터 덩어리들을 자유자재로 합치고 걸러내는 전용 집합 연산이 존재합니다. 이번 수업에서는 두 그룹의 데이터를 합체시키는 ‘합집합’과, 양쪽 모두의 조건을 만족하는 소수 정예만 뽑아내는 ‘교집합’을 배웁니다.


학습 목표

  • 합집합($A \cup B$)과 교집합($A \cap B$)의 수학적 정의를 벤다이어그램으로 완벽하게 이해합니다.
  • 파이썬의 조건 연산자 |(OR)와 &(AND)가 이 위대한 수학적 뷰형을 즉시 코드 레벨로 구현함을 확인합니다.
  • 데이터베이스(SQL) 검색에서 교집합과 합집합 논리가 어떻게 쓰이는지 직관적으로 매핑합니다.

1. 뭉치면 산다: 합집합 (Union, $\cup$)

음악 시간에 ‘합창’ 하면 어떤가요? A반 아이들과 B반 아이들이 한 강당에 오글오글 다 모이는 것입니다. 수학에서도 두 집합 $A$와 $B$에 속하는 모든 원소를 하나로 싹 쓸어 모으는 것을 합집합(Union)이라 부르며, 넓은 그릇 컵 모양($\cup$)의 기호를 씁니다.

$A \cup B = {x \mid x \in A$ 또는(or) $x \in B}$

A에만 있어도 통과, B에만 있어도 통과, 양쪽에 다 있어도 통과입니다. 당연히 벤다이어그램의 두 동그라미 전체가 색칠됩니다. 주의할 점은, 양쪽 반에 모두 소속된 부회장 같은 학생이 있다고 해서 두 번 세지 않습니다. 집합의 제 1법칙칙인 “중복 제거” 덕분에 무조건 한 번만 합쳐집니다.

2. 공통점만 쏙쏙 뽑아라: 교집합 (Intersection, $\cap$)

소개팅 앱에서 남녀 매칭을 시켜줄 때, “둘 다 로맨스 영화를 좋아하고, 둘 다 고양이를 키우는 사람!” 같은 까다로운 ‘공통 관심사’를 찾을 때가 바로 이 교집합(Intersection)을 쓰는 순간입니다. 기호는 컵이 뒤집힌 모양으로, 양쪽 멤버가 겹치는 아주 좁은 모자 모양($\cap$)을 씁니다.

$A \cap B = {x \mid x \in A$ 그리고(and) $x \in B}$

A에도 있고 반드시 B에도 동시에 있어야만 이 좁은 틈(교차 영역)을 통과할 수 있습니다. 벤다이어그램에서는 두 동그라미가 겹치는 한가운데 조그만 아몬드 모양이 됩니다. 그래서 교집합 연산을 거치면 거칠수록 남는 데이터의 크기는 줄어들고 정보는 더욱 날카롭고 정교해집니다.

빨간색 마블 팬과 파란색 DC 팬 사이에서 두 셔츠를 모두 입은 정예 교집합 팬의 모습
합집합의 모든 영역 선택 과정과 교집합의 겹치는 부분 선택 과정을 비교하는 SVG 애니메이션

3. 파이썬과 함께하는 1초 컷 데이터 필터링

이 수학 기호들은 데이터 처리가 생명인 파이썬(Python)의 연산자로 $1:1$ 완벽하게 대응됩니다!

# 파이썬 Set 연산자로 체험하는 눈부신 성능의 교집합 합집합론

# 1. 넷플릭스 유저들의 시청 기록 데이터 목록 (집합 생성)
marvel_fans = {"아이언맨", "어벤져스", "스파이더맨"}    # A 집합
dc_fans = {"배트맨", "슈퍼맨", "아이언맨"}              # B 집합 (아이언맨 양다리!)

# 2. 합집합 (| : 파이프(OR) 기호) -> 전체 시청 목록 하나로 합치기
all_movies = marvel_fans | dc_fans
print(f"합집합 (A U B): {all_movies}")
# 출력: {'슈퍼맨', '아이언맨', '어벤져스', '스파이더맨', '배트맨'} 
# (양다리인 '아이언맨'은 1번만 등장함! 중복제거 마법)

# 3. 교집합 (& : 앰퍼샌드(AND) 기호) -> 두 영화를 모두 본 골수 히어로 마니아 찾기!
both_fans = marvel_fans & dc_fans
print(f"교집합 (A ∩ B): {both_fans}")
# 출력: {'아이언맨'}

여러분이 포털 사이트 검색창에 “갤럭시 AND 아이폰” 이라고 두 단어를 함께 쳤을 때, 서버 컴퓨터는 전 세계 수십억 장의 웹페이지들 중에서 ‘갤럭시가 들어간 문서 집합(A)’과 ‘아이폰이 들어간 문서 집합(B)’의 무식한 교집합($A \cap B$)을 파이썬 & 연산자 단 한 줄의 로직으로 순식간에 추려내어 화면에 뿌려주는 것입니다. 우리는 매일 숨 쉬듯이 집합 연산을 쓰고 있었습니다.

학습 정리

  1. 합집합($\cup$)과 파이썬 |: 두 집합의 모든 원소를 중복 없이 하나로 영토를 확장시키는 병합 연산. “A 또는 B” (OR 조건)
  2. 교집합($\cap$)과 파이썬 &: 양쪽 집합 모두에 동시에 소속된 교차 영역의 공통 멤버만 날카롭게 뽑아내는 필터링 연산. “A 그리고 B” (AND 조건)
  3. 서로소 (Disjoint): 만약 두 집합 사이에 아예 공통 멤버가 한 명도 없어서 교집합을 때렸더니 텅 빈 공집합($\emptyset$)이 나온다면, 이 서먹서먹한 두 그룹을 수학에서는 특별히 ‘서로소’ 관계라고 부른다.
서브목차