Learning
토픽 11 / 21·과목별 관계도

알고리즘 관계도

💡

이 관계도는 전체 토픽의 구조와 연결 관계를 보여줍니다. 학습 전에 전체 흐름을 파악하세요.

토픽 마인드맵
mindmap
  root((알고리즘<br/>80개 토픽))
    기초 개념
      알고리즘
      시간 복잡도
      공간 복잡도
      재귀
      메모이제이션
    정렬 알고리즘
      기본 정렬
        정렬
        버블 정렬
        선택 정렬
        삽입 정렬
        셸 정렬
      고급 정렬
        병합 정렬
        퀵 정렬
        힙 정렬
        팀 정렬
      선형 시간 정렬
        계수 정렬
        기수 정렬
      정렬 이론
        안정 정렬 vs 불안정 정렬
        외부 정렬
    검색 알고리즘
      검색
      선형 검색
      이진 검색
      해시 검색
      보간 탐색
    설계 기법
      분할 정복
      동적 프로그래밍
      탐욕 알고리즘
      백트래킹
      브루트 포스
      비트마스크 DP
      그리디 vs DP 비교
    알고리즘 기법
      Two Pointers
      Sliding Window
    그래프 알고리즘
      그래프 탐색
        그래프 탐색
        DFS
        BFS
      최단 경로
        최단 경로
        Dijkstra 알고리즘
        Bellman-Ford 알고리즘
        Floyd-Warshall 알고리즘
        A* 알고리즘
      최소 스패닝 트리
        최소 스패닝 트리
        Kruskal 알고리즘
        Prim 알고리즘
      위상 정렬
      그래프 구조
        Tarjan's SCC
        이분 매칭
        헝가리안 알고리즘
      네트워크 플로우
        최대 유량
        최소 컷
        Ford-Fulkerson / Edmonds-Karp / Dinic
      트리 알고리즘
        LCA
        Heavy-Light Decomposition
    문자열 알고리즘
      문자열 매칭
        문자열 매칭
        KMP 알고리즘
        Boyer-Moore 알고리즘
        Rabin-Karp 알고리즘
        Aho-Corasick 알고리즘
      문자열 처리
        Manacher 알고리즘
        Z 알고리즘
        Suffix Array
      문자열 DP
        최장 공통 부분 수열
        편집 거리
        LIS
    고급 자료구조 알고리즘
      Segment Tree
      Fenwick Tree
      Trie
      Union-Find
    기하 알고리즘
      Convex Hull
    수학/변환
      FFT
      허프만 코딩
    특수 알고리즘
      Mo's Algorithm
    복잡도 이론
      NP 완전
      P vs NP 문제
    고급 알고리즘 이론
      근사 알고리즘
      온라인 알고리즘
      병렬 알고리즘
    메타휴리스틱
      메타휴리스틱
      유전 알고리즘
      시뮬레이티드 어닐링
    응용 수학
      대기행렬 이론

주요 카테고리별 토픽 수

카테고리토픽 수주요 기술
기초 개념5개알고리즘, 시간복잡도, 공간복잡도, 재귀, 메모이제이션
정렬 알고리즘14개버블, 선택, 삽입, 셸, 병합, 퀵, 힙, 팀, 계수, 기수, 안정/불안정, 외부 정렬
검색 알고리즘5개검색, 선형검색, 이진검색, 해시검색, 보간탐색
설계 기법7개분할정복, DP, 탐욕, 백트래킹, 브루트포스, 비트마스크 DP, 그리디 vs DP
알고리즘 기법2개Two Pointers, Sliding Window
그래프 알고리즘20개DFS/BFS, Dijkstra, MST, 위상정렬, SCC, LCA, HLD, 헝가리안, 최대유량, 최소컷, Ford-Fulkerson
문자열 알고리즘12개KMP, Boyer-Moore, Rabin-Karp, Aho-Corasick, LCS, 편집거리, LIS
고급 자료구조4개세그먼트 트리, Fenwick 트리, Trie, Union-Find
기하 알고리즘1개Convex Hull
수학/변환2개FFT, 허프만 코딩
특수 알고리즘1개Mo's Algorithm
복잡도 이론2개NP 완전, P vs NP 문제
고급 알고리즘 이론3개근사 알고리즘, 온라인 알고리즘, 병렬 알고리즘
메타휴리스틱3개메타휴리스틱, 유전 알고리즘, 시뮬레이티드 어닐링
응용 수학1개대기행렬 이론

총 80개 토픽: (기존 61개에서 19개 추가)

핵심 연관 관계

정렬 알고리즘 진화 (시간복잡도)

O(n²) - 기본
  ├─ 버블 정렬
  ├─ 선택 정렬
  ├─ 삽입 정렬 (거의 정렬된 데이터에 효율적)
  └─ 셸 정렬 (삽입 정렬 개선, 간격 기반)

O(n log n) - 고급
  ├─ 병합 정렬 (안정, 추가 메모리)
  ├─ 퀵 정렬 (평균 빠름, 최악 O(n²))
  ├─ 힙 정렬 (제자리, 비안정)
  └─ 팀 정렬 (병합+삽입, 실전 최적화, Python/Java 기본)

O(n) - 특수 조건
  ├─ 계수 정렬 (정수, 범위 제한)
  └─ 기수 정렬 (자릿수 기반)

특수 정렬
  └─ 외부 정렬 (메모리 초과 데이터, 다단계 병합)

알고리즘 설계 기법

분할 정복 (Divide & Conquer)
  ├─ 병합 정렬
  ├─ 퀵 정렬
  └─ 이진 검색

동적 프로그래밍 (DP)
  ├─ LCS
  ├─ 편집 거리
  ├─ LIS
  ├─ 배낭 문제
  ├─ 비트마스크 DP (상태 압축)
  └─ 메모이제이션 (Top-Down DP)

탐욕 알고리즘 (Greedy)
  ├─ Dijkstra
  ├─ Prim
  ├─ Kruskal
  └─ 허프만 코딩

백트래킹
  ├─ N-Queens
  └─ 순열/조합

그리디 vs DP 비교
  ├─ 최적 부분 구조 (공통)
  ├─ 탐욕 선택 속성 (Greedy만)
  └─ 중복 부분 문제 (DP만)

그래프 탐색 기반 알고리즘

DFS 응용
  ├─ 사이클 탐지
  ├─ 위상 정렬
  ├─ Tarjan's SCC
  └─ 이분 매칭

BFS 응용
  ├─ 최단 경로 (무가중치)
  └─ 레벨 순회

최단 경로 알고리즘 비교

단일 시작점 (Single Source)
  ├─ Dijkstra (음수 간선 없음, 그리디)
  └─ Bellman-Ford (음수 간선 허용, DP)

모든 쌍 (All Pairs)
  └─ Floyd-Warshall (DP, O(V³))

휴리스틱
  └─ A* (목표 지향, h(n) 함수)

최소 스패닝 트리 (MST)

간선 중심
  └─ Kruskal (Union-Find, 간선 정렬)

정점 중심
  └─ Prim (우선순위 큐, Dijkstra와 유사)

네트워크 플로우

최대 유량 (Max Flow)
  ├─ Ford-Fulkerson (기본, DFS 기반)
  ├─ Edmonds-Karp (BFS 기반, O(VE²))
  └─ Dinic (레벨 그래프, O(V²E))

최대유량-최소컷 정리
  ├─ 최대 유량 = 최소 컷
  └─ 이분 매칭과 연결 (쾨닉 정리)

매칭
  ├─ 이분 매칭 (호프크로프트-카프)
  └─ 헝가리안 알고리즘 (최소 비용 할당)

문자열 매칭 알고리즘

단순 매칭
  └─ 브루트 포스 O(nm)

전처리 기반
  ├─ KMP (패턴 전처리, O(n+m))
  ├─ Boyer-Moore (역방향, 실전 빠름)
  └─ Rabin-Karp (해시, 다중 패턴)

다중 패턴
  └─ Aho-Corasick (트라이 + KMP, 여러 패턴)

회문/반복
  ├─ Manacher (최장 회문)
  └─ Z 알고리즘 (접두사 매칭)

접미사 기반
  └─ Suffix Array (모든 부분 문자열)

구간 쿼리 자료구조

Segment Tree
  ├─ 구간 합/최소/최대
  ├─ 레이지 업데이트
  └─ O(log n) 쿼리/업데이트

Fenwick Tree (BIT)
  ├─ 누적 합
  ├─ 메모리 효율적
  └─ O(log n) 쿼리/업데이트

검색 알고리즘 비교

순차 검색
  └─ 선형 검색 O(n)

분할 기반
  ├─ 이진 검색 O(log n) - 정렬 필수
  └─ 보간 탐색 O(log log n) - 균등 분포 시

해시 기반
  └─ 해시 검색 O(1) 평균 - 해시 충돌 처리

메타휴리스틱 / 근사

메타휴리스틱
  ├─ 유전 알고리즘 (진화 기반)
  ├─ 시뮬레이티드 어닐링 (물리 기반)
  └─ NP-Hard 문제의 근사 해

근사 알고리즘
  ├─ 다항 시간 보장
  └─ 근사 비율 분석

온라인 알고리즘
  ├─ 미래 입력 모름
  └─ 경쟁 비율 (Competitive Ratio)

알고리즘 기법 (Two Pointers / Sliding Window)

Two Pointers
  ├─ 정렬된 배열에서 쌍 찾기
  ├─ 부분 배열 합
  └─ O(n) 선형 시간

Sliding Window
  ├─ 고정/가변 크기 윈도우
  ├─ 부분 문자열/배열 최적화
  └─ Two Pointers의 특수한 형태

시간 복잡도 비교

정렬 알고리즘

정렬최선평균최악공간안정성
버블O(n)O(n²)O(n²)O(1)안정
선택O(n²)O(n²)O(n²)O(1)불안정
삽입O(n)O(n²)O(n²)O(1)안정
O(n log n)O(n^1.5)O(n²)O(1)불안정
병합O(n log n)O(n log n)O(n log n)O(n)안정
O(n log n)O(n log n)O(n²)O(log n)불안정
O(n log n)O(n log n)O(n log n)O(1)불안정
O(n)O(n log n)O(n log n)O(n)안정
계수O(n+k)O(n+k)O(n+k)O(k)안정
기수O(d(n+k))O(d(n+k))O(d(n+k))O(n+k)안정

그래프 알고리즘

알고리즘시간 복잡도공간특징
DFSO(V+E)O(V)스택/재귀
BFSO(V+E)O(V)
DijkstraO((V+E) log V)O(V)우선순위 큐, 음수 간선 불가
Bellman-FordO(VE)O(V)음수 간선 가능
Floyd-WarshallO(V³)O(V²)모든 쌍 최단 경로
KruskalO(E log E)O(V)Union-Find
PrimO((V+E) log V)O(V)우선순위 큐
Tarjan SCCO(V+E)O(V)DFS 기반
Ford-FulkersonO(E × max_flow)O(V+E)증가 경로
Edmonds-KarpO(VE²)O(V+E)BFS 기반

문자열 알고리즘

알고리즘전처리매칭공간특징
브루트 포스O(1)O(nm)O(1)단순
KMPO(m)O(n)O(m)실패 함수
Boyer-MooreO(m+σ)O(n/m)~O(nm)O(σ)실전 빠름
Rabin-KarpO(m)O(n+m)O(1)해시, 다중 패턴
Aho-CorasickO(Σm)O(n+z)O(Σm)다중 패턴

σ = 알파벳 크기, z = 매칭 개수

학습 순서 추천

1단계: 기초

1. 시간/공간 복잡도

2. 재귀, 메모이제이션

3. 정렬 (버블, 선택, 삽입)

4. 검색 (선형, 이진)

2단계: 고급 정렬

5. 병합 정렬 (분할 정복)

6. 퀵 정렬

7. 힙 정렬

8. 셸 정렬, 팀 정렬

9. 안정 정렬 vs 불안정 정렬

3단계: 알고리즘 설계 기법

10. 분할 정복

11. 동적 프로그래밍

12. 탐욕 알고리즘

13. 백트래킹

14. 그리디 vs DP 비교

4단계: 그래프 기초

15. DFS, BFS

16. Dijkstra

17. MST (Kruskal, Prim)

5단계: 그래프 고급

18. Bellman-Ford

19. Floyd-Warshall

20. 위상 정렬

21. Tarjan's SCC

6단계: 문자열

22. KMP

23. LCS, LIS

24. 편집 거리

7단계: 고급 자료구조

25. Segment Tree

26. Fenwick Tree

27. Union-Find

28. Trie

8단계: 특수 알고리즘 / 기법

29. A* (휴리스틱 탐색)

30. Two Pointers, Sliding Window

31. 비트마스크 DP

32. 해시 검색, 보간 탐색

9단계: 네트워크 플로우

33. 이분 매칭, 헝가리안 알고리즘

34. 최대 유량, 최소 컷

35. Ford-Fulkerson / Edmonds-Karp / Dinic

10단계: 고급 이론

36. NP 완전, P vs NP 문제

37. 근사 알고리즘, 온라인 알고리즘

38. 메타휴리스틱 (유전 알고리즘, SA)

39. 병렬 알고리즘

40. 대기행렬 이론

시험 출제 포인트

고빈도 주제

  • 정렬 비교: 시간복잡도, 안정성, 사용 사례 (팀 정렬 포함)
  • 이진 검색: 구현, 변형 문제
  • DP: 개념, LCS, LIS, 편집 거리, 배낭 문제, 비트마스크 DP
  • Dijkstra: 동작 원리, 우선순위 큐 사용
  • MST: Kruskal vs Prim 비교
  • DFS vs BFS: 차이, 응용
  • 재귀와 메모이제이션: DP와의 관계

중요 개념

  • 분할 정복: 병합 정렬, 퀵 정렬
  • 탐욕 vs DP: 차이, 최적 부분 구조, 그리디 vs DP 비교
  • Floyd-Warshall: 모든 쌍 최단 경로
  • 위상 정렬: 순환 그래프 탐지
  • KMP: 실패 함수, O(n+m)
  • Two Pointers / Sliding Window: 배열/문자열 최적화
  • 안정 정렬 vs 불안정 정렬: 정렬 안정성 개념

고급 주제

  • Tarjan's SCC: 강연결 요소
  • 이분 매칭: 호프크로프트-카프
  • 헝가리안 알고리즘: 최소 비용 할당 문제
  • 최대 유량 / 최소 컷: Ford-Fulkerson, Edmonds-Karp, Dinic
  • Segment Tree: 레이지 업데이트
  • A*: 휴리스틱 함수, Dijkstra와 차이
  • 해시 검색: 해시 충돌 해결 방법

복잡도 이론

  • NP-Complete: P vs NP, NP-Hard
  • 근사 알고리즘: NP-Hard 문제의 근사 해
  • 온라인 알고리즘: 경쟁 비율

고급 알고리즘

  • 메타휴리스틱: 유전 알고리즘, 시뮬레이티드 어닐링
  • 병렬 알고리즘: Amdahl의 법칙, MapReduce
  • 대기행렬 이론: M/M/1, 서비스율, 도착률
  • 외부 정렬: 다단계 병합, 대용량 데이터

마인드맵 활용 팁:

  • 정렬 알고리즘은 시간복잡도별로 그룹화 (팀 정렬, 셸 정렬 추가)
  • 그래프 알고리즘은 탐색(DFS/BFS) → 최단경로 → MST → 네트워크 플로우 순으로 학습
  • DP와 탐욕 알고리즘의 차이 명확히 이해 (그리디 vs DP 비교 토픽 참고)
  • 문자열 알고리즘은 KMP가 핵심 (다른 것들은 KMP 변형)
  • 세그먼트 트리/Fenwick 트리는 구간 쿼리 최적화
  • Two Pointers/Sliding Window는 배열 문제의 핵심 기법
  • 네트워크 플로우(최대유량/최소컷)는 이분 매칭과 연결
  • 메타휴리스틱은 NP-Hard 문제 해결의 실용적 접근