
강의계획
| 회차 |
주제 |
주요 내용 구성 |
|
|
|
| 1회차 |
|
|
|
|
|
| 알고리즘 분석 기초 |
|
|
(실습 문제 주제:
완전 탐색, 이진 탐색)
|
- 알고리즘의 정의 및 개념
- 시간 & 공간 복잡도 (Big-O, Big-Ω, Big-Θ)
- Worst-case Complexity와 Average Complexity
- 배열(Array) vs 링크드 리스트(Linked List) 복잡도 비교
- 데이터 전처리(정렬)의 중요성: 완전 탐색(Brute-force)과 이진 탐색(Binary Search)
- O(N^2) 정렬 알고리즘: 삽입 정렬(Insertion sort)
|
|
2회차
|
정렬 알고리즘
(실습 문제 주제:
병합/퀵 정렬,
힙 정렬/우선순위 큐)
|
- 분할 정복(Divide and conquer)
- 퀵 정렬(Quick sort), 병합 정렬(Merge sort)
- 힙 자료구조: 우선순위 큐(Priority Queue) 복습
- 힙 정렬(Heap sort)과 가속 힙 정렬(Accelerated Heap sort)
- 정렬 알고리즘 복잡도 비교
|
|
3회차
|
Dynamic Sets
(실습 문제 주제:
동적 배열/스택,
이진탐색트리)
|
- 분할 상환 분석(Amortized Analysis)과 동적 배열(Array
Doubling)
- 이진탐색트리(Binary Search Tree)와 레드블랙트리(Red-Black Tree)
- Heap과 BST 비교
- Balanced Tree가 왜 필요할까?
|
|
4회차
|
그래프 알고리즘
(실습 문제 주제:
DFS, 최단 경로)
|
- 그래프 표현 방식(인접 행렬, 인접 리스트)과 BFS, DFS
- BFS와 DFS, 언제 무엇을 쓸까?
- 탐욕적 알고리즘(Greedy Algorithm)
- Minimum Spanning Tree: 정점 중심의 Prim, 간선 중심의 Kruskal
- Shortest Path: Dijkstra (+ BFS 언급)
- 음수 가중치가 있다면 어떤 알고리즘을 써야 할까?
- Transitive Closure: Floyd-Warshall
- Dijkstra와 Floyd-Warshall 비교
|
|
5회차
|
동적 프로그래밍(DP)과 문자열 알고리즘
(실습 문제 주제:
DP, 패턴 매칭)
|
- Dynamic Programming의 핵심 개념 (메모이제이션, 점화식 세우기)
- DP의 두 가지 구현 방식: Top-down(재귀+메모이제이션)과 Bottom-up(반복문+테이블만들기)
- 행렬 경로 곱셈(Matrix-Chain Multiplication)
- Pattern Matching: Brute-force, KMP, Boyer-Moore
- 알고리즘 설계 기법 비교: Brute-Force, Divide & Conquer, Greedy, Dynamic Programming
|
활동 사진









