This lesson is only available in Korean for now.
Dr. Seonggu Sohn's Data Structures, First Steps

From a single variable
to the graph that solves a maze

You learn data structures from the very beginning — analogies instead of jargon, and running things yourself instead of only reading about them.
Python runs right inside this page. There is nothing to install.

🐍 Python📚 stacks & queues🌳 trees 🕸️ graphs⏱️ Big-O🇬🇧 English
Start lesson 1 →

How you'll learn

📦Understanding by analogy

A list is a row of numbered lockers, a stack is a pile of plates, a queue is people waiting in line. Unfamiliar ideas are explained in terms of things you already know.

▶️Run it yourself

Every piece of code has a run button. Change it, get it wrong, try it again.

🎨See it drawn

Every lesson comes with an illustration of the idea it teaches.

🛠️Learn by building

You finish an undo feature, a priority queue and a maze-escaping program yourself.

Full curriculum

01
변수 — 이름표를 붙인 상자
모든 자료구조의 가장 작은 조상
✓
02
리스트 — 번호가 붙은 사물함 한 줄
순서가 있는 여러 값을 하나의 이름으로
✓
03
인덱스와 슬라이스 — 몇 번째 칸을 집을까
0부터 세는 이유, 그리고 잘라내기
✓
04
튜플과 집합 — 못 바꾸는 묶음, 중복 없는 주머니
리스트 말고 다른 그릇이 필요한 순간
✓
05
딕셔너리 — 이름으로 꺼내는 서랍장
번호 대신 열쇠로 찾는다
✓
06
스택 — 마지막에 쌓은 접시를 먼저
실행 취소(Ctrl+Z)가 동작하는 원리
✓
07
큐와 덱 — 먼저 온 사람이 먼저
줄 서기, 그리고 앞뒤로 다 되는 줄
✓
08
연결 리스트 — 다음 사람의 손을 잡은 줄
칸 번호를 버리고 화살표를 얻다
✓
09
재귀 — 거울 속의 거울
자기 자신을 부르는 함수, 그리고 그 밑을 받치는 스택
✓
10
트리 — 뿌리에서 뻗어 나가는 가지
계층을 담는 그릇, 그리고 세 가지 순회
✓
11
이진 탐색 트리 — 반씩 접어 가며 찾는 나무
규칙 하나를 더했을 뿐인데 검색이 폭발적으로 빨라진다
✓
12
힙과 우선순위 큐 — 가장 급한 것이 맨 위로
줄 선 순서가 아니라 중요도 순서로
✓
13
해시 테이블 — 이름을 번호로 바꾸는 마법
딕셔너리와 집합이 그렇게 빠른 진짜 이유
✓
14
그래프 — 점과 선으로 그린 관계
친구 관계, 지하철 노선도, 인터넷 그 자체
✓
15
BFS와 DFS — 넓게 퍼질까, 깊게 파고들까
큐 하나 vs 스택 하나, 그 한 글자 차이
✓
16
탐색 — 처음부터 하나씩 vs 반씩 접기
정렬해 두면 찾기가 얼마나 빨라지는가
✓
17
정렬 — 순서를 만드는 여러 가지 방법
같은 결과, 완전히 다른 속도
✓
18
졸업 작품 — 미로를 탈출하는 프로그램
지금까지 배운 것을 전부 한자리에
✓
19
시간 복잡도 — 데이터가 100배가 되면
빠르다·느리다를 말로 하지 않고 정확히 표현하는 법
✓
20
자료구조 고르는 법 — 문제에 맞는 그릇
20강의 마무리, 그리고 여러분이 만들 것
✓