---
id: wiki-2026-0508-mece-principle
title: MECE Principle
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [mutually-exclusive-collectively-exhaustive, mece]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [reasoning, framework, problem-solving, structured-thinking]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
  language: meta
  framework: McKinsey/Pyramid Principle
---

# MECE Principle

## 매 한 줄
> **"매 Mutually Exclusive, Collectively Exhaustive — 매 분류가 매 겹치지 않고 매 빠짐 없도록"**. 매 McKinsey의 Barbara Minto 가 정립한 매 structured thinking 의 cornerstone — 매 issue tree, root-cause, decision tree 매 모든 분해 작업의 sanity check — 매 LLM era 에서 도 prompt design 의 핵심.

## 매 핵심

### 매 두 조건
- **ME (Mutually Exclusive)**: 매 카테고리 간 매 overlap = 0.
- **CE (Collectively Exhaustive)**: 매 카테고리 합집합 = 전체.

### 매 typical violation
- **overlap**: 매 "남성 / 여성 / 운동선수" — 매 운동선수 매 양 성별과 겹침.
- **gap**: 매 "0-20세 / 30-50세 / 60+세" — 매 21-29, 51-59 누락.
- **mixed dimension**: 매 색깔 + 모양 의 mix — 매 categorize 의 차원 의 잡음.

### 매 응용
1. 매 issue tree (Pyramid Principle).
2. 매 root cause 5-Why.
3. 매 LLM prompt 의 답 의 structure 강제.
4. 매 도메인 모델링 enum 설계.

## 💻 패턴

### 매 issue tree (예: 매출 감소)
```
매출 감소
├── volume 감소           ← MECE 조건 1
│   ├── 신규 고객 감소
│   └── 기존 고객 이탈
└── 단가 감소             ← MECE 조건 2
    ├── 할인 증가
    └── 믹스 변화
// 매 합집합 = 매출 변화 모든 원인
// 매 교집합 = 0
```

### 매 검증 checklist
```typescript
function validateMECE<T>(buckets: T[][], universe: T[]): {ok: boolean, issues: string[]} {
  const issues: string[] = [];
  const flat = buckets.flat();
  // 매 overlap check
  const seen = new Set<T>();
  for (const item of flat) {
    if (seen.has(item)) issues.push(`overlap: ${item}`);
    seen.add(item);
  }
  // 매 exhaustiveness check
  for (const u of universe) {
    if (!seen.has(u)) issues.push(`gap: ${u}`);
  }
  return { ok: issues.length === 0, issues };
}
```

### 매 enum exhaustive (TypeScript)
```typescript
type Status = 'pending' | 'active' | 'archived';
function handle(s: Status) {
  switch (s) {
    case 'pending': return ...;
    case 'active': return ...;
    case 'archived': return ...;
    default: { const _: never = s; throw new Error(_); }
    // 매 새 case 추가 시 compile error → CE 보장
  }
}
```

### 매 LLM prompt MECE
```
다음 카테고리들로만 분류하라. 매 항목은 정확히 하나의 카테고리에만 속한다.
- A: <명확한 정의>
- B: <명확한 정의>
- C: 위 어느 것에도 해당하지 않는 모든 경우  ← 매 CE 보장 의 escape hatch
```

### 매 root cause 5-Why MECE
```
Q1: 왜 deploy 실패?
  A: build 단계 vs deploy 단계 vs config 단계  ← MECE 분기
Q2 (build 분기): 왜 build 실패?
  A: dependency vs compile vs test          ← MECE 분기
...
```

### 매 데이터 partition
```sql
-- 매 user segmentation 매 MECE
CASE
  WHEN ltv >= 1000 THEN 'high'
  WHEN ltv >= 100 THEN 'mid'
  WHEN ltv >= 0 THEN 'low'
  ELSE 'unknown'  -- 매 NULL/음수 의 catch-all
END AS segment
-- 매 boundary 매 명시 / 매 catch-all 의 CE 의 보장
```

## 매 결정 기준
| 상황 | Approach |
|---|---|
| 매 pure analysis | strict MECE |
| 매 fuzzy domain | "기타" bucket 의 catch-all |
| 매 enum domain | exhaustive switch + never |
| 매 LLM 분류 | "위 외의 모든 경우" 항목 명시 |

**기본값**: 매 strict MECE 의 시도 → 매 fuzzy 면 catch-all bucket 추가.

## 🔗 Graph
- 부모: [[Pyramid Principle]] · [[Structured Thinking]]
- 변형: [[Issue Tree]] · [[Root Cause Analysis]]
- 응용: [[BLUF (Bottom Line Up Front)]] · [[Type-safe Error Handling  Exhaustiveness Checking]]
- Adjacent: [[Cognitive_Load]]

## 🤖 LLM 활용
**언제**: 매 답 의 structure 강제, 매 bucket 분류 의 정확도 의 끌어 올림.
**언제 X**: 매 creative brainstorm — 매 MECE 의 강제는 발산 의 막음.

## ❌ 안티패턴
- **dimension mix**: 매 한 분기에 매 color + size 의 동시 분류.
- **catch-all 남발**: 매 "기타" 가 50% 면 분해 의 의미 없음.
- **MECE 강박**: 매 fuzzy 영역의 매 strict MECE 의 over-engineering.

## 🧪 검증 / 중복
- Verified (Barbara Minto, Pyramid Principle 3rd ed.; McKinsey internal training).
- 신뢰도 A.

## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — MECE 정의 + issue tree/enum/LLM prompt 응용 정리 |
