반응형

수능 수학, 코딩의 눈으로 직관 뚫기

[코딩X수학 개념 #16] 집합의 연산과 리스트 심화 : 수능 킬러 조건을 관통하는 원소 포함 관계 알고리즘

안녕하세요! 변수와 확률 데이터를 Key와 Value로 묶어 수능 통계의 뼈대를 지배했던 지난 15화의 '딕셔너리' 마법, 다들 짜릿하게 마스터하셨을 겁니다. 이로써 우리는 확률과 통계의 이산분포 단원까지 성공적으로 갈무리했습니다.

오늘 16화부터는 다시 수능 공통과목(수1·수2)과 고등 수학 전체의 기저에 흐르는 강력한 논리적 무기를 제련하러 갑니다. 바로 집합의 연산과 다차원 포함 관계입니다. 수능 공통 4점짜리 고난도 추론 문항을 마주하면 어김없이 나타나는 기호가 있죠.
"두 조건 $p, q$의 진리집합을 각각 $A, B$라 할 때, $(A \cap B) \subset C$를 만족하는..."
수많은 조건이 결합하면 벤다이어그램을 그리다가도 어떤 원소가 어디에 속해야 하는지 뇌 정지가 오곤 합니다.

하지만 원소가 주머니에 포함되어 있는지를 단 1초 만에 검사하는 코딩의 멤버십 연산자(in / not in)와 리스트의 포함 관계 알고리즘을 결합하면, 출제자가 교묘하게 설계해 놓은 다중 조건식의 그물이 아주 명쾌하게 해체됩니다. 수능 시험장에서 복잡한 포함 관계 조건을 소름 돋도록 정교하게 필터링하는 최상위권의 논리적 통제력을 이식해 드리겠습니다.


1 수학의 기호 $x \in A$와 $A \subset B$, 코딩의 'in' 루프로 치환하기

수학 교과서에서 원소 $x$가 집합 $A$에 속한다는 기호는 $x \in A$입니다. 그리고 집합 $A$의 모든 원소가 집합 $B$에 속할 때 '부분집합'이라 부르고 $A \subset B$라고 정의하죠. 기호는 우아하지만, 실제 문제를 풀 때는 "이 바구니에 든 알맹이가 저 바구니에도 다 들어있는가?"를 전수 조사해야 하는 지극히 알고리즘적인 제어 과정입니다.

파이썬 코딩에서는 특정 원소가 리스트 주머니에 존재하는지 확인할 때 마법 같은 단어인 in 연산자를 사용합니다. 만약 존재한다면 컴퓨터는 즉시 참(True)을 외치고, 없다면 거짓(False)을 선언하죠. 반대로 속하지 않는다는 기호 $x \notin A$는 코딩에서 not in으로 완벽하게 번역됩니다.

🧩 수능 집합 기호와 코딩 제어문의 직관적 매칭

  • 1. 원소의 소속 ($x \in A$) : 변수가 주머니 안에 있는가? ➡️ 코딩 조건식 if x in A:
  • 2. 원소의 배제 ($x \notin A$) : 변수가 주머니에 없어야 하는가? ➡️ 코딩 조건식 if x not in A:
  • 3. 부분집합 관계 ($A \subset B$) : A의 원소가 전부 B에 있는가? ➡️ For 루프로 A를 뽑으며 in B를 전수 검사

2 실전 분석: 수능 단골 '조건을 만족하는 차집합과 원소의 추적' 문항

수능 모의고사 4점짜리 복합 명제 단원에서 단골로 등장하는 '여러 개의 제한 조건 집합 연산과 원소 추론' 문제를 코딩의 흐름 제어로 완벽하게 추적해 보겠습니다.

"전체집합 $U = \{ x \mid x \text{는 } 20 \text{ 이하의 자연수} \}$ 의 세 부분집합 $A, B, C$가 있다.
$A$는 $2$의 배수의 집합, $B$는 $3$의 배수의 집합이다. 새로운 조건 집합 $X$가 $X = (A \cup B) - (A \cap B)$ 라고 정의될 때, 집합 $X$의 원소 중 $4$의 배수의 집합인 $C$의 원소가 '아닌' 원소들만 모은 새로운 집합의 원소의 개수를 구하시오."

말이 복잡해질수록 상위권의 뇌는 기계적으로 작동합니다. 대칭차집합($X$)을 구하고, 거기서 다시 $C$의 원소를 필터링 탈락시키는 명확한 파이썬 알고리즘 파이프라인을 보시죠.

# 기본 조건 주머니(리스트)들을 선언합니다.
U = list(range(1, 21))
A = [x for x in U if x % 2 == 0]   # 2의 배수
B = [x for x in U if x % 3 == 0]   # 3의 배수
C = [x for x in U if x % 4 == 0]   # 4의 배수

X = []  # (A ∪ B) - (A ∩ B)를 만족하는 대칭차집합 상자

# [1단계 완전 탐색] 전체 원소를 돌며 대칭차집합의 조건문을 통과시킵니다.
for x in U:
    # (x가 A에 있거나 B에 있음) 이고 (동시에 둘 다에 있지는 않음)
    if (x in A or x in B) and not (x in A and x in B):
        X.append(x)

final_result_box = []  # 최종 타깃 원소들을 담을 상자

# [2단계 필터링] X의 원소 중 C의 원소가 '아닌(not in)' 녀석만 선별합니다.
for x in X:
    if x not in C:
        final_result_box.append(x)

print("대칭차집합 X의 원소:", X)
print("최종 필터링된 원소 주머니:", final_result_box)
print("수능 최종 정답 개수:", len(final_result_box))

🧠 이 코딩적 꼼꼼함이 수능 시험장에서 발휘하는 파괴력

① 여집합과 차집합 조건의 완벽한 억제력 (not in) :
수능 고난도 문제에서 학생들이 가장 허무하게 감점당하는 포인트는 수식을 풀다가 마지막 단계인 '조건 $C$가 아니다'라는 여집합 조건을 대충 넘겨짚어 $C$의 원소를 포함해 세어버리는 실수입니다. 하지만 코딩의 not in C 연산 회로를 머릿속에 장착하면, 마지막 원소를 하나씩 나열하거나 카운팅할 때 뇌에서 기계적인 제동을 겁니다. "잠깐, 이 원소가 $C$ 주머니에 들어있나?"를 깐깐하게 대조하게 되므로 예외 원소 누락으로 인한 4점 실수가 원천 봉쇄됩니다.

② 수능 공통과목 복합 조건문의 구조적 해독 :
수능 14번이나 22번 같은 추론 문항은 여러 조건들이 엮여 하나의 거대한 제약식을 만듭니다. 위 코드의 and not (x in A and x in B) 구조를 독해하듯, 수능 지문을 읽을 때도 '이 조건과 저 조건은 동시에 참이어야 하고, 이 조건은 절대 참이 되면 안 되는구나'라는 합성 명제의 구조를 자로 잰 듯 계층적으로 쪼개어 분석하는 논리적 시야가 탑재됩니다. 출제자가 조건을 아무리 복잡하게 꼬아놓아도 흔들리지 않는 최상위권의 탄탄한 기본기가 완성되는 셈입니다.


🎯 16화 수능 도약을 위한 핵심 노트

1. 수학의 원소 소속 기호($\in, \notin$)는 데이터의 유무를 판단하는 코딩의 멤버십 연산자(in / not in)와 본질이 완벽히 같다.
2. 복잡한 다중 집합 연산은 무작정 그림을 그리기보다, 조건을 만족하는 원소를 단계적으로 걸러내는 2단계 필터링 알고리즘으로 해결할 수 있다.
3. 여집합 조건을 not in의 눈으로 철저하게 제어하는 버릇을 들이면, 수능 4점짜리 복합 추론 문항에서 조건 오류와 계산 실수가 완벽하게 제로(0)가 된다!

다음 시간(17화) 예고:
집합 주머니 속의 복잡한 조건 필터링 흐름을 지배하는 논리력을 완성했습니다! 그렇다면 이 정교한 포함 관계 논리를 바탕으로, 수능 수학 수학Ⅰ 과목에서 등급을 가르는 가장 강력한 지수함수와 로그함수의 대소 관계 비교, 그리고 [지수·로그함수의 연산과 파이썬 연산 최적화]의 비밀을 17화에서 완전히 파헤쳐 보겠습니다. 수1의 킬러 준킬러를 찢는 함수 연산의 세계로 들어갑니다. 다음 시간에 만나요!

반응형

+ Recent posts