Algorithm Learning Guide
Introduction
This folder contains materials for systematically learning algorithms and data structures. You can study step-by-step from complexity analysis to advanced algorithms, which is helpful for coding interview preparation and algorithm competition training.
Target Audience: Developers with programming fundamentals, coding test preparation candidates
Learning Roadmap
[Basic] [Intermediate] [Advanced]
ā ā ā
ā¼ ā¼ ā¼
Complexity Analysis āāāā¶ Divide & Conquer āāāā¶ Dynamic Programming
ā ā ā
ā¼ ā¼ ā¼
Arrays/Strings āāāāāā¶ Trees/BST āāāāāāāāāāāā¶ Segment Tree
ā ā ā
ā¼ ā¼ ā¼
Stacks/Queues āāāāāāā¶ Graph Basics āāāāāāāāā¶ Network Flow
ā ā ā
ā¼ ā¼ ā¼
Hash Tables āāāāāāāāā¶ Shortest Path/MST āāā¶ Advanced DP Optimization
Prerequisites
- Programming fundamentals (variables, control flow, functions)
- Basic data structures (arrays, lists)
- At least one language among C, C++, or Python
File List
Basic Data Structures (01-05)
Search and Divide & Conquer (06-08)
Tree Data Structures (09-11)
Graphs (12-17)
| Filename |
Difficulty |
Key Topics |
| 12_Graph_Basics.md |
āā |
Graph representation, DFS, BFS |
| 13_Topological_Sort.md |
āāā |
Kahn, DFS-based, cycle detection |
| 14_Shortest_Path.md |
āāā |
Dijkstra, Bellman-Ford, Floyd-Warshall |
| 15_Minimum_Spanning_Tree.md |
āāā |
Kruskal, Prim, Union-Find |
| 16_LCA_and_Tree_Queries.md |
āāā |
Binary Lifting, Sparse Table |
| 17_Strongly_Connected_Components.md |
āāāā |
Tarjan, Kosaraju, 2-SAT |
DP and Mathematics (18-22)
| Filename |
Difficulty |
Key Topics |
| 18_Dynamic_Programming.md |
āāā |
Memoization, knapsack, LCS, LIS |
| 19_Greedy_Algorithms.md |
āā |
Activity selection, Huffman coding, greedy vs DP |
| 20_Bitmask_DP.md |
āāā |
Bit operations, TSP, set DP |
| 21_Math_and_Number_Theory.md |
āāā |
Modular arithmetic, GCD/LCM, primes, combinatorics |
| 22_String_Algorithms.md |
āāā |
KMP, Rabin-Karp, Z-algorithm |
Advanced Data Structures (23-24)
Advanced Graphs (25)
| Filename |
Difficulty |
Key Topics |
| 25_Network_Flow.md |
āāāā |
Ford-Fulkerson, bipartite matching |
Special Topics (26-28)
Wrap-up
| Filename |
Difficulty |
Key Topics |
| 29_Problem_Solving.md |
āāāā |
Problem type approaches, LeetCode/BOJ recommendations |
Recommended Learning Sequence
Phase 1: Basic Data Structures (1 week)
Phase 2: Sorting and Searching (1 week)
Phase 3: Trees (1 week)
Phase 4: Graph Basics (1-2 weeks)
Phase 5: Advanced Graphs (1 week)
Phase 6: DP and Mathematics (2 weeks)
18 ā 19 ā 20 ā 21 ā 22
Phase 7: Advanced Data Structures (1 week)
Phase 8: Advanced Graphs and Special Topics (2+ weeks)
Wrap-up
29 (recommended to proceed in parallel with other phases)
Practice Environment
Language-specific Setup
# C/C++ (GCC)
gcc --version
g++ --version
# Python
python3 --version
# Online environments
# - https://www.onlinegdb.com/
# - https://replit.com/
- IDE: VS Code, CLion, PyCharm
- Online Judge: BOJ (Baekjoon), LeetCode, Programmers
- Visualization: https://visualgo.net/
Complexity Quick Reference
| Complexity |
Name |
Example |
~10^6 operations |
| O(1) |
Constant |
Array access |
Instant |
| O(log n) |
Logarithmic |
Binary search |
~20 ops |
| O(n) |
Linear |
Sequential search |
10^6 ops |
| O(n log n) |
Linearithmic |
Merge sort |
~2Ć10^7 ops |
| O(n²) |
Quadratic |
Bubble sort |
10^12 ops (caution) |
| O(2^n) |
Exponential |
Subsets |
Infeasible |
Integration with Other Folders
| Folder |
Related Content |
| C_Programming/ |
Dynamic arrays, linked lists, hash table implementation |
| CPP/ |
STL containers, algorithm header usage |
| Python/ |
List comprehension, itertools usage |
External Resources
Learning Tips
- Implement Yourself: Try implementing before using libraries
- Complexity Analysis: Calculate time/space complexity for all code
- Multiple Languages: Implement the same algorithm in C, C++, and Python
- Problem Solving: Solve 3-5 related problems after each lesson
- Error Log: Record why you got problems wrong
Coding Test Preparation Guide
Goals by Level
| Level |
Goal |
Required Lessons |
| Beginner |
Solve basic problems |
01~08 |
| Intermediate |
Major company coding tests |
01~17 |
| Advanced |
Algorithm competitions |
01~25 |
| Expert |
ICPC/IOI level |
All (including 26~29) |
Time Limit Guidelines
- 1 second: O(n log n) or better (n ⤠10^6)
- 2 seconds: O(n²) feasible (n ⤠5000)
- 5 seconds: O(n²) feasible (n ⤠10000)