math
CHAPTER 9 / 15
읽기 약 2분
FUNCTION
참과 거짓: Boolean의 수학
핵심 개념
명제 논리와 Boolean — AND(∧)·OR(∨)·NOT(¬)·단축 평가의 수학적 근거.
본문
명제 논리 기본
명제 (Proposition): 참(T) 또는 거짓(F)으로 판단 가능한 문장
· "1 + 1 = 2" → T
· "오늘은 비가 온다" → 상황에 따라 T/F
· "이 문장은 거짓이다" → 명제 아님 (역설)
논리 연산자
· AND ∧ (그리고)
· OR ∨ (또는)
· NOT ¬ (아니다)
· XOR ⊕ (배타적 또는)
· IMPLIES → (만약 ~이면)진리표
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 | TPython/JavaScript 매핑
# 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) — 수학적 근거
# 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 직접 호출했다면 AttributeErrorJavaScript 실전 패턴
// 단축 평가 활용
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에서 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 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