수능 수학, 코딩의 눈으로 직관 뚫기
[코딩X수학 개념 #13] 순열과 조합 : 수능 확통 4점짜리 경우의 수를 완벽하게 카운팅하는 완전 탐색(Brute Force)의 눈
안녕하세요! 사각형을 잘게 쪼개어 실시간으로 넓이 데이터를 누적하는 For 반복문의 메커니즘으로 수능 수학Ⅱ 정적분 그래프 추론 문항을 정복했던 지난 12화 내용, 다들 완벽하게 소화하셨을 겁니다. [cite: 123, 130] 이로써 다항함수의 미적분이라는 거대한 산을 넘었습니다. [cite: 130]
오늘 13화부터는 수능 선택과목의 복병이자, 사소한 실수 하나로 정답이 한 끗 차이로 엇갈리는 단원인 확률과 통계(순열과 조합)의 세계로 발을 내딛습니다. 수능 확통 단골 4점 문항인 "다음 조건을 만족하는 자연수 쌍 $(a, b, c)$의 개수를 구하시오"라는 문제를 보면 어떤가요? 순열($\text{P}$)을 쓸지, 조합($\text{C}$)을 쓸지 공식부터 고민하다가 결국 몇 가지 케이스를 빼먹어 틀리지는 않았나요?
코딩에는 가능한 모든 경우의 수를 한 치의 오차도 없이 샅샅이 뒤지는 완전 탐색(Brute Force) 알고리즘이 있습니다. 컴퓨터가 지치지 않고 모든 가능성을 필터링하여 카운팅하는 논리를 빌려오면, 수능 시험장에서 중복과 누락을 본능적으로 차단하는 '무결점 카운팅 직관'이 완성됩니다. 공식 암기를 넘어선 확통의 본질을 보여드리겠습니다.
1 공식은 수단일 뿐! 수능 확통의 본질은 '중복 없이, 빠짐없이' 세는 것
많은 학생이 순열 공식($n! / (n-r)!$)이나 조합 공식($_n\text{C}_r$)의 숫자를 계산하는 것이 확통의 전부라고 착각합니다. 하지만 수능 출제자가 원하는 변별력은 계산 능력이 아닙니다. 복잡한 제한 조건(조건문)을 걸어두었을 때, 학생들이 "얼마나 기준을 잘 세워 빠짐없이 세고(For), 중복을 확실하게 걸러내는가(If)"를 평가하고자 합니다. [cite: 171, 172]
이것은 컴퓨터 과학의 가장 기본이자 강력한 기법인 완전 탐색(Brute Force) 알고리즘과 일치합니다. 가용한 모든 후보군을 주머니(리스트)에 넣어둔 뒤, 이중·삼중 반복문으로 모든 조합을 꺼내어 출제자의 조건문을 통과시키는 원리입니다. [cite: 163] 순열과 조합 공식은 이 완전 탐색 과정을 인간의 손 계산으로 빠르게 처리하기 위해 요약해 둔 '수학적 압축 기호'일 뿐입니다.
2 실전 분석: 수능 확통 단골 '제한 조건이 붙은 자연수 쌍' 구하기
실제 수능 모의고사 4점 배점 섹션에 반드시 출제되는 '제한 조건이 결합한 경우의 수' 문제를 코딩의 완전 탐색 회로로 시각화해 보겠습니다.
조건 (가) $a < b \le c$ 를 만족하고, 조건 (나) $a + b + c$ 가 $3$의 배수가 되는 모든 순서쌍 $(a, b, c)$의 개수를 구하시오."
중복조합 공식으로만 접근하려 하면 조건 (가)의 크기 비교($<, \le$)와 조건 (나)의 배수 조건이 꼬여 머리가 아파옵니다. 하지만 3차원 공간을 탐색하는 컴퓨터의 눈으로 보면 이 문제는 단 몇 줄의 제어문으로 명쾌하게 카운팅됩니다.
# 조건에 합격한 순서쌍들을 저장할 빈 주머니(리스트) valid_pairs = [] count = 0 # 정답 개수를 세어줄 카운팅 변수 # [삼중 반복문] 1부터 6까지의 자연수 카드를 x, y, z축 평면에서 전부 꺼냅니다. for a in range(1, 7): for b in range(1, 7): for c in range(1, 7): # [조건문 필터링] 출제자의 조건 (가)와 조건 (나)를 동시에 검사합니다. # % 3 == 0 은 3의 배수인지 확인하는 마법의 주기성 기호입니다 (3화 내용) if (a < b <= c) and (a + b + c) % 3 == 0: valid_pairs.append((a, b, c)) count = count + 1 # 합격할 때마다 카운터 1 증가 print("조건을 만족하는 모든 순서쌍:", valid_pairs) print("수능 최종 정답 개수:", count)
🧠 이 코딩적 제어가 수능 시험장에서 실수를 제로(0)로 만드는 이유
① 무조건 정답을 맞추는 '사건의 구조화' 능력 :
수능 확통 4점 문항을 틀리는 원인의 90%는 공식을 몰라서가 아니라, 스스로 케이스를 분류하다가 특정 숫자를 빠뜨리거나 중복 계산하기 때문입니다. [cite: 169, 171] 위 알고리즘처럼 [전체 공간 설정(For) ➡️ 조건 필터링(If) ➡️ 정확한 카운팅]의 뼈대가 머릿속에 잡힌 학생들은 수능 시험지 여백에 수형도를 그리거나 대입을 할 때도 기계적이고 완벽한 통제력을 발휘합니다. "내가 어떤 기준으로 For 루프를 돌릴 것인가"가 명확해지므로 풀이 흐름이 절대 꼬이지 않습니다.
② 수형도(Tree 구조) 그리기의 알고리즘적 정당성 :
고난도 확통 문제일수록 공식 하나로 풀리지 않고 결국 직접 손으로 분류해야 하는 경우가 많습니다. 이때 코딩의 삼중 반복문 흐름은 수능 시험장에서 가장 안전한 노가다(?)인 **'수형도 가지치기'**의 완벽한 이정표가 됩니다. $a$를 1로 고정했을 때 $b$가 가질 수 있는 범위, 그때 $c$가 만족해야 하는 배수 성질을 계층적으로 내려가는 뇌의 알고리즘 회로를 활성화하여, 가장 정교하고 실수를 범하지 않는 최상위권의 확통 직관을 완성합니다.
🎯 13화 수능 도약을 위한 핵심 노트
1. 수능 확률과 통계의 본질은 공식을 외우는 것이 아닌, 모든 가능성을 훑는 완전 탐색(Brute Force)의 제어력이다. \n 2. 삼중 루프 속의 조건 필터링을 시각화하면, 수능 4점짜리 복합 제한 조건 문항에서도 원소의 누락과 중복을 완벽히 차단하게 된다. \n 3. 사건의 구조를 명확히 쪼개는 훈련은 고난도 확통 문항의 핵심인 '정교한 수형도 설계와 케이스 카운팅 능력'의 치트키가 된다!
다음 시간(14화) 예고:
경우의 수를 빈틈없이 세어내는 카운팅 시스템을 마스터했습니다! 그렇다면 이 정교한 사건 주머니들을 바탕으로, 전체 사건 공간 중에서 출제자가 원하는 사건이 일어날 비율을 예측하는 단원, 바로 수능의 단골 킬러 조건인 [조건부 확률(Conditional Probability)]의 비밀을 코딩의 확률적 시뮬레이션 회로의 시각으로 분해해 보겠습니다. 확통 점수를 최종 완성할 14화에서 만나요! 다음 시간에 만나요!
