01. 첫 번째 수업: 모든 멀티버스의 개수 세기, 경우의 수 (Number of Cases)

컴퓨터 프로그래밍(특히 완전탐색: Brute Force) 의 첫걸음은 “예상할 수 있는 모든 오류와 분기점 시나리오를 하나도 안 빼놓고 노가다로 전부 리스트화 시키는 것” 에 있습니다. 주사위를 굴리거나 동전을 던졌을 때 나타날 수 있는 이 시나리오 분기점 가지 수를 수학에서는 ‘경우의 수(Number of Cases)’ 라고 부릅니다.


1. 사건(Event) 과 테스트(Trial) 구분하기

엄밀히 말해 프로그래머처럼 식별자를 정리하고 넘어갑시다.

  • 시행(Trial / Experiment): 당신이 Run 버튼을 눌러 스크립트를 가동하는 ‘행위’ 그 자체입니다. “동전을 허공으로 던져 바닥에 떨어뜨리는 물리적 행위”
  • 사건(Event): 그 시행(행위) 의 결과로 콘솔 모니터 창에 텍스트로 출력된 “결괏값의 조건문 상태” 입니다. “홀수 눈이 나왔어!”, “앞면이 떨어졌어!” 같은 발생 상태를 말합니다.

2. 노가다 카운트의 위대함

경우의 수는 단순 무식하지만 가장 강력한 데이터 파싱입니다. 질문:

“주사위 한 개를 던졌습니다. 여기서 ‘짝수’ 의 눈이 튀어나오는 사건의 [경우의 수]는 몇 개입니까?”

멍청한 AI처럼 노가다로 리스트를 뽑으세요.

  • 주사위의 총 우주 분기점 데이터 [1, 2, 3, 4, 5, 6] 세팅 완료.
  • 이 중에서 Array 필터를 걸어 짝수에 해당하는 데이터만 따로 pop 해서 뽑아 담으세요.
  • [2, 4, 6]
  • 배열에 든 원소의 개수를 세세요.
  • array.length == 3!

정답: 경우의 수는 3 (세 가지 시나리오) 입니다! 너무 쉽고 우스워 보이나요? 나중에 윷놀이를 던질 때 도, 개, 걸, 윷, 모 중에서 개가 나올 분기점의 모든 뒷면, 앞면 세트를 손으로 찾다 보면, 이 단순하게 빼놓지 않고 리스트로 담는 기초 훈련이 얼마나 우주방어의 그물망인지 깨닫게 됩니다.

3. 배열과 집합(Set) 으로 생각하라

머리가 좋은 고대 해커들은 경우의 수를 단순히 손가락 접기로만 세지 않고, 이걸 “조건을 만족하는 놈들을 가둔 바구니인 집합(Set)” 으로 생각하기 시작했습니다. 그래서 중학교 수학 과정 맨 앞 1단원에서 항상 ‘집합’ 모듈을 배우는 이유가 여기 있습니다!

예를 들어, 어떤 사건 $A$ 가 일어날 상황 가지 수들을 바구니 $A={2, 4, 6}$ 에 모았습니다. 나중에 이 바구니 원소들을 세는 기호 $n(A) = 3$ 을 그대로 ‘경우의 수’ 로 퉁쳐서 부를 수 있기 때문입니다.

자, 그런데 이 바구니가 두 개, 세 개로 늘어나면 어떻게 될까요? “주사위 홀수이거나 동전 뒷면이 나와야 해!” 처럼 퀘스트 제약 조건이 동시에 떨어질 때, 우리는 중학교 수학 최강의 단축키 논리 연산자인 합의 법칙(OR)곱의 법칙(AND) 게이트(Gate) 스위치를 켜야만 합니다. 다음 장으로 갑니다!

서브목차