01. 집합의 4대 연산과 파이썬 코어 논리
1. 학습 목표 (Learning Objectives)
- 수의 연산(+, -, ×, ÷)처럼 집합 덩어리들을 지지고 볶는 집합의 4대 연산인 교집합($\cap$), 합집합($\cup$), 차집합($-$), 여집합($^c$)의 벤 다이어그램 영역을 정복합니다.
- 파이썬(Python)에 내장된 고성능
set자료형과 기호(&,|,-,^)를 통해 집합 연산이 프로그래밍 언어에서 얼마나 강력하게 작동하는지 실습합니다.
2. 원 두 개로 배우는 4대 연산 색칠놀이
수학에서 $A, B$ 두 개의 벤 다이어그램 원이 겹쳐 있을 때, 우리가 할 수 있는 연산(놀이)은 크게 4가지입니다.
- 교집합 ($A \cap B$) (Intersection)
- 의미: A와 B의 조건을 ‘동시에(AND)’ 만족하는 엘리트들.
- 영역 색칠: 두 원이 겹친 가운데 볼록한 렌즈(럭비공) 모양 영역.
- 합집합 ($A \cup B$) (Union)
- 의미: A 거나 B 거나 상관없이 ‘적어도 하나(OR)’ 속하는 전체 인원.
- 영역 색칠: 눈사람처럼 이어 붙은 A와 B 원의 윤곽선 전체 내부 면적 싹 다!
- 차집합 ($A - B$) (Difference)
- 의미: 오직 나(A)만의 오리지널 멤버! 상대방(B)과 겹치는 더러운(?) 교집합 배신자들을 칼같이 도려내 버린 순수한 A의 영역.
- 영역 색칠: 초승달(사과 한 입 베어 문 모양) 형태로 남은 A 쪽 영역.
- 여집합 ($A^c$) (Complement)
- 의미: 전체 우주($U$)에서 나(A)를 뺀 ‘나머지(NOT)’ 아웃사이더 전부.
- 영역 색칠: 원 A의 밖을 감싸고 있는 여백(배경) 영역 전부.
3. 파이썬 set 연산자 실습 (Python)
위의 4가지 논리는 파이썬 개발자들이 데이터를 걸러낼 때 숨 쉬듯이 자주 사용하는 연산입니다. 리스트(List) 데이터를 수학의 벤 다이어그램인 set(집합) 타입으로 변환하면 아주 강력하고 빠른 마법이 펼쳐집니다.
# A: 짝수를 좋아하는 학생들 세트
A = {2, 4, 6, 8, 10}
# B: 3의 배수를 좋아하는 학생들 세트
B = {3, 6, 9}
print(f"집합 A 마당: {A}")
print(f"집합 B 마당: {B}")
print("-" * 50)
# 1. 원의 겹치는 부분: 교집합 (Intersection, 기호는 &)
# "짝수이면서 3의 배수(6의 배수)를 좋아하는 깐깐한 학생"
intersect = A & B
print(f"1. 교집합(A ∩ B) [가운데 럭비공 영역] : {intersect}")
# 2. 원의 바운더리 전체: 합집합 (Union, 기호는 |)
# "짝수 혹은 3의 배수 중 하나라도 좋아하는 학생 전부 집합!"
union = A | B
print(f"2. 합집합(A ∪ B) [눈사람 전체 영역] : {union}")
# 3. 도려낸 사과 모양: 차집합 (Difference, 기호는 -)
# "오로지 순수하게 짝수만 좋아하고, 3의 배수(6 등)는 죽어도 싫은 퓨어 A"
diff_A_minus_B = A - B
print(f"3. 순수 A 차집합(A - B) [사과 베어문 초승달] : {diff_A_minus_B}")
# 4. 차집합 스위핑: 대칭 차집합 (Symmetric Difference, 기호는 ^)
# (A-B) 와 (B-A) 합친, 양쪽 끝 순수 멤버들만 모음! (가운데 교집합 쥐방울들 극혐!)
sym_diff = A ^ B
print(f"4. 대칭 차집합(A △ B) [두 초승달의 결합] : {sym_diff}")
파이썬의 실행 결과 요약:
집합 A 마당: {2, 4, 6, 8, 10}
집합 B 마당: {9, 3, 6}
--------------------------------------------------
1. 교집합(A ∩ B) [가운데 럭비공 영역] : {6}
2. 합집합(A ∪ B) [눈사람 전체 영역] : {2, 3, 4, 6, 8, 9, 10}
3. 순수 A 차집합(A - B) [사과 베어문 초승달] : {8, 2, 10, 4}
4. 대칭 차집합(A △ B) [두 초승달의 결합] : {2, 3, 4, 8, 9, 10}
파이썬 내부에서는 개발자가 일일이 반복(for/if) 문을 돌리지 않아도, 수학적 집합론 알고리즘 엔진이 작동하여 수만 개의 데이터 중 겹치거나 순수한 데이터만 $0.01$초 만에 분리해 반환합니다.
4. 학습 정리 (Summary)
- 집합의 4대 연산: 교차하는 원의 영역에 맞추어
AND(교집합),OR(합집합),NOT(여집합),배타적 추출(차집합)이라는 강력한 논리 도구를 활용할 수 있습니다. - 파이썬 내장 객체
set: 일반 배열에 담긴 데이터를 중복 없이 유일무이한 수학적 집합 객체로 스캔해 주며,&, |, -, ^연산자를 통해 벤 다이어그램과 100% 동일한 논리 필터링 결과를 즉시 도출해 내는 개발 필수 무기입니다.
서브목차