Ch 5. 자료구조 (Data Structures)
1 / 5

Lesson 205. 자료구조

해시 집합, 해시 맵, 우선순위 큐(힙), 덱(Deque), 트라이, 허프만 코딩 - set/dict의 O(1) 해시 연산 - heapq를 이용한 우선순위 큐 활용 - deque를 활용한 O(1) 슬라이딩 윈도우 - Trie 접두사 트리 구축 - 우선순위 큐 기반 허프만 최적화

수업 목표 및 핵심 역량

- set을 활용하여 중복을 O(N)에 제거하고 값을 식별합니다. - Trie의 자식 노드 포인터 구조를 생성하여 접두사 일관성을 검사합니다. - heapq에 카운터를 활용한 튜플을 넣어 비교 오류를 예방합니다. - R진 허프만 트리 최적 가중치를 구하기 위한 더미 노드 수식을 이해합니다. - 8023번 ~ 8027번 실습 문제를 해결합니다.

집합, 맵 & 트라이

# set 자료형으로 O(N)에 중복 제거
unique_count = len(set(arr))

# Trie 클래스 구조
class TrieNode:
    def __init__(self):
        self.children = {}
        self.is_end = False

우선순위 큐 & 허프만

# heapq 튜플 정렬 충돌 방지를 위한 카운터 사용
import heapq
h = []
count = 0
heapq.heappush(h, (freq, count, node))
count += 1

오류 예방 및 작성 요령

- **Trie 메모리 초과 방지**: 불필요한 자식 노드 선언을 줄이기 위해 딕셔너리로 구현 - **heapq 비교 오류**: 객체 직접 비교 대신 튜플에 고유 일련번호(counter)를 삽입하여 충돌 차단 - **양방향 큐 사용**: pop(0)은 TLE($O(N)$) 유발 → popleft()($O(1)$)를 지원하는 deque 사용
ESC — 수업으로 돌아가기  ·  F — 전체화면