포함배제 원리는 집합의 합과 교집합을 이용하여 원하는 결과를 구하는 방법이다.

만약 집합 A, B, C의 합집합을 구하는 경우, 다음과 같은 수식을 이용한다.

A ∪ B ∪ C = (A + B + C) - (A ∩ B) - (A ∩ C) - (B ∩ C) + (A ∩ B ∩ C)

위 수식에서 우변의 첫 번째 항은 A, B, C의 합을 나타내고, 이후의 항들은 각 집합의 교집합을 나타낸다.

예제

집합 A, B, C가 다음과 같을 때,

A = {1, 2, 3}
B = {2, 3, 4}
C = {3, 4, 5}

A, B, C의 합집합을 구하는 식은

A ∪ B ∪ C = (A + B + C) - (A ∩ B) - (A ∩ C) - (B ∩ C) + (A ∩ B ∩ C)
           = (1+2+3+2+3+4+3+4+5) - (2+3) - (3) - (3+4) + (3)
           = 15

따라서 A, B, C의 합집합은 {1, 2, 3, 4, 5}이며 ABC의 합집합 합은 15이다.

위 수식을 파이썬 코드로 작성하면 다음과 같다.

예제 2

A = {1, 2, 3}  # 집합 A
B = {2, 3, 4}  # 집합 B
C = {3, 4, 5}  # 집합 C

# 집합 A, B, C의 합집합 구하기
union = len(A) + len(B) + len(C) - len(A.intersection(B)) - len(A.intersection(C)) - len(B.intersection(C)) + len(A.intersection(B).intersection(C))

print(union)  # 결과 출력

포함배제 원리는 집합을 이용하여 원하는 결과를 구하는 방법 중 하나다. 이를 활용하여 다양한 문제를 해결할 수 있다. 예를 들어, 다음과 같은 문제가 있다고 보자

"1부터 100까지의 자연수 중에서 3의 배수 또는 5의 배수인 수의 합을 구하시오."

이 문제를 포함배제 원리를 이용해서 풀어보겠다. 먼저, 3의 배수인 수의 집합을 A, 5의 배수인 수의 집합을 B라고 하면, 문제는 A와 B의 합집합에서 15의 배수인 수의 합을 빼면 된다. 이를 수식으로 나타내면 다음과 같다.

A = {3, 6, 9, ..., 99}
B = {5, 10, 15, ..., 100}

A ∪ B = {3, 5, 6, 9, 10, 12, ..., 99, 100}

15의 배수인 수의 집합을 C라고 하면, 문제는 다음과 같이 풀이할 수 있다.

C = {15, 30, 45, ..., 90}

A ∪ B ∪ C = (A ∪ B) + C - (A ∩ C) - (B ∩ C)

따라서, 파이썬 코드로 구현하면 다음과 같다.