CHAPTER 02

자료구조

데이터를 효율적으로 저장하고 접근하는 방법. 알고리즘의 성능은 자료구조 선택에 달려 있습니다.

배열/링크드리스트스택&큐BST해시테이블 이진힙Union-Find세그먼트트리펜윅트리
01 — 배열 vs 링크드 리스트

Array vs Linked List

같은 데이터를 배열과 링크드 리스트로 동시에 표현합니다. 메모리 배치와 포인터 구조의 차이를 직접 확인해 보세요.

▦ Array 연속 메모리
접근 O(1) 끝추가 O(1) 앞삽입 O(n)
⟶ Linked List 포인터 연결
접근 O(n) 앞삽입 O(1) 끝추가 O(n)
02 — 스택 & 큐

Stack & Queue

스택(LIFO)과 큐(FIFO)는 가장 기본적인 선형 자료구조입니다. 함수 호출 스택, 프린터 대기열 등 실생활에서도 쓰입니다.

⬆ Stack LIFO

비어있음

→ Queue FIFO

비어있음
03 — 이진 탐색 트리

Binary Search Tree

왼쪽 자식 < 부모 < 오른쪽 자식. 균형 잡힌 BST는 삽입·탐색·삭제 모두 O(log n)에 처리합니다.

값을 입력하고 삽입해 보세요.
04 — 해시 테이블

Hash Table

키를 해시 함수로 변환해 버킷에 저장합니다. 평균 O(1) 탐색·삽입. 충돌은 체이닝으로 해결합니다.

hash(key) = Σ charCode % 8
05 — 이진 힙

Binary Heap

힙은 완전 이진 트리 형태로, 부모 노드가 항상 자식보다 작은(Min-Heap) 또는 큰(Max-Heap) 자료구조입니다. 삽입과 최솟값 추출이 O(log n)으로, 우선순위 큐 구현에 사용됩니다.

배열 표현
트리 시각화
값을 입력하고 삽입해 보세요.
06 — Union-Find

Union-Find (서로소 집합)

서로소 집합(Disjoint Set) 자료구조입니다. 여러 원소를 집합으로 묶고, 두 원소가 같은 집합에 있는지 O(α(n)) ≈ O(1)에 판단합니다. 크루스칼 알고리즘, 네트워크 연결성 판단에 핵심적으로 사용됩니다.

노드를 두 개 클릭해서 선택하세요. (선택됨: 없음)
두 노드를 클릭해 선택한 뒤 Union 또는 Find를 실행하세요.
07 — 세그먼트 트리

Segment Tree

배열의 구간 합(또는 최솟값/최댓값)을 O(log n)에 구할 수 있는 트리 자료구조입니다. 게임 랭킹, 주식 데이터 분석 등에 활용됩니다.

셀을 클릭하면 값이 재랜덤화됩니다.
L: R:
쿼리를 실행하면 결과가 표시됩니다.
세그먼트 트리
08 — 펜윅 트리 (BIT)

Fenwick Tree (Binary Indexed Tree)

Binary Indexed Tree(BIT)라고도 합니다. 세그먼트 트리보다 구현이 간단하면서도 구간 합 쿼리와 점 업데이트를 O(log n)에 처리합니다. 내부적으로 비트 연산(i & -i)을 사용하는 것이 특징입니다.

원본 배열 (1-indexed)
BIT 배열 (i & -i 구조)
점 업데이트
인덱스: Δ:
구간 합 쿼리
L: R:
업데이트 또는 쿼리를 실행하면 결과가 표시됩니다.
09 — TRIE

트라이 (Trie / Prefix Tree)

문자열을 트리 구조로 저장하여 접두사 검색을 O(L) (L=문자열 길이)에 처리합니다. 자동완성, 사전, IP 라우팅에 사용됩니다.

자동완성 시뮬레이션
현재 단어:
트라이는 각 노드가 한 글자를 나타내는 트리. 삽입/검색 O(L). 해시테이블보다 접두사 검색에 유리. 단점: 메모리 사용량 ↑. 활용: 검색 자동완성, 맞춤법 검사, IP 라우팅 테이블.