OPEN HYPER STEP
← 목록으로 (math)
MATH · 9 / 15
math
CHAPTER 9 / 15
읽기 약 2
FUNCTION

참과 거짓: Boolean의 수학


핵심 개념

명제 논리와 Boolean — AND(∧)·OR(∨)·NOT(¬)·단축 평가의 수학적 근거.

본문

명제 논리 기본

📋 코드 (11줄)
명제 (Proposition): 참(T) 또는 거짓(F)으로 판단 가능한 문장
  · "1 + 1 = 2" → T
  · "오늘은 비가 온다" → 상황에 따라 T/F
  · "이 문장은 거짓이다" → 명제 아님 (역설)

논리 연산자
  · AND ∧ (그리고)
  · OR  ∨ (또는)
  · NOT ¬ (아니다)
  · XOR ⊕ (배타적 또는)
  · IMPLIES → (만약 ~이면)

진리표

📋 코드 (5줄)
A | B | A∧B | A∨B | A⊕B | ¬A
T | T |  T  |  T  |  F  |  F
T | F |  F  |  T  |  T  |  F
F | T |  F  |  T  |  T  |  T
F | F |  F  |  F  |  F  |  T

Python/JavaScript 매핑

PYTHON📋 코드 (17줄)
# Python
A = True
B = False

print(A and B)     # False (∧)
print(A or B)      # True  (∨)
print(not A)       # False (¬)
print(A ^ B)       # True  (XOR — 비트 연산자가 boolean에도 작동)


# JavaScript (가독성)
"""
A && B   // ∧
A || B   // ∨
!A       // ¬
A !== B  // XOR (boolean에 한해)
"""

단축 평가 (Short-circuit) — 수학적 근거

PYTHON📋 코드 (24줄)
# AND 단축: 첫 항이 False면 두 번째 항 평가 안 함
# 수학: F ∧ X = F (X와 무관)

def expensive_check():
    print("called!")
    return True

# False AND ... → 두 번째 함수 호출 안 됨
result = False and expensive_check()
print(result)  # False
# (expensive_check 호출 안 됨 — "called!" 미출력)


# OR 단축: 첫 항이 True면 두 번째 항 평가 안 함
# 수학: T ∨ X = T (X와 무관)

result = True or expensive_check()
# (expensive_check 호출 안 됨)


# 실전 활용 — null 체크
user = None
name = user and user.name  # None (user가 falsy면 user.name 평가 안 함)
# user.name 직접 호출했다면 AttributeError

JavaScript 실전 패턴

JAVASCRIPT📋 코드 (14줄)
// 단축 평가 활용
const user = null;
const name = user?.name ?? '익명';  // 옵셔널 체이닝 + nullish 병합

// 기본값 패턴
const port = process.env.PORT || 3000;  // PORT가 falsy면 3000

// 조건부 실행
isDev && console.log('debug info');  // isDev가 true일 때만 실행

// 조건부 반환
function getMessage(user) {
  return user && user.isAdmin && '관리자 메뉴 표시';
}

Truthy / Falsy

PYTHON📋 코드 (15줄)
# Python에서 Boolean 컨텍스트의 falsy 값
print(bool(False))      # False
print(bool(0))          # False
print(bool(0.0))        # False
print(bool(""))         # False
print(bool([]))         # False
print(bool({}))         # False
print(bool(None))       # False
print(bool(set()))      # False

# 그 외는 모두 True
print(bool(1))          # True
print(bool("0"))        # True (문자열 "0"은 True!)
print(bool([0]))        # True (요소 있는 리스트)
print(bool([False]))    # True
JAVASCRIPT📋 코드 (13줄)
// JavaScript falsy 값 (정확히 6가지)
// false, 0, '', null, undefined, NaN

console.log(!!0);        // false
console.log(!!"");       // false
console.log(!!null);     // false
console.log(!!undefined);// false
console.log(!!NaN);      // false

// 그 외는 모두 truthy
console.log(!!"0");      // true (문자열 "0")
console.log(!![]);       // true (빈 배열)
console.log(!!{});       // true (빈 객체)

다음 챕터

CH.10 "진리표" — 복잡한 if/else를 표로 정리해 분석.


AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude

무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6

내 코드의 if 조건문을 분석해서
명제 논리로 표현하고 단순화 가능한
위치를 우선순위로 알려줘.
ChatGPT

무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro

한국 인기 라이브러리(React/Vue/Express)의
실전 단축 평가 패턴 10개와
각각의 베스트 프랙티스를 알려줘.
Gemini

무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro

내 코드베이스 전체에서 단축 평가
사용 패턴을 분석하고 옵셔널 체이닝으로
전환 가능한 위치를 보고해줘.
Grok

무료: Grok 4.1 / SuperGrok $30/mo

2026년 TypeScript에서 strictNullChecks
도입 비율과 안 쓰면 생기는
실전 버그 사례를 솔직히 알려줘.

⭐ 이것만 기억하세요
참과 거짓: Boolean의 수학 이 3가지만 확실히 잡으세요
1.Boolean과 명제 논리는 1:1 대응 — AND/OR/NOT는 수학의 ∧/∨/¬와 같은 의미
2.단축 평가는 "결과가 정해진 시점에 평가 중단" — 수학의 F∧X=F, T∨X=T 원리에서 출발
3.다음 챕터 CH.10에서 진리표 — 복잡한 조건문을 표로 정리해 불필요한 분기 발견


공유하기
진행도 9 / 15