← 질문 목록
#163깊이 0
문자열 검색 효율을 높이는 최적의 자료구조는 무엇인가?
접두사로 찾거나 자동완성을 붙일 때는 트라이(Trie)다. 문자열 검색이라고 늘 트라이는 아니다. 문자열을 트리 구조로 저장해 접두사 공유로 탐색 시간을 문자열 길이에 비례하게 줄인다.
| 자료구조 | 저장 방식 |
|---|---|
| 트라이 | 문자열의 각 문자를 노드로 저장 |
| 해시 맵 | 전체 문자열을 키로 저장 |
트라이는 문자열의 공통 접두사를 노드로 공유한다. 동일한 시작 문자를 가진 단어들은 같은 경로를 따라가므로 중복 탐색을 피한다.
KMP나 라빈-카프 알고리즘은 특정 텍스트 내에서 패턴을 찾을 때 쓴다. 트라이는 사전(Dictionary)처럼 여러 단어를 빠르게 검색하거나 자동완성에 적합하다.
시간 복잡도는 O(L)이다. 여기서 L은 검색하려는 문자열의 길이이며, 데이터셋의 크기와 상관없이 일정하게 유지된다.
추천 꼬리질문
관련 질문
- 문자열 검색 최적화 시 어떤 기준으로 알고리즘을 고르는가?자료구조 · 알고리즘두 질문 모두 문자열 검색 성능 최적화를 위한 자료구조 및 알고리즘 선택 기준을 다룬다.
- 트라이를 사용하는 이유는 무엇인가?자료구조 · 알고리즘트라이와 문자열 검색 효율을 높이는 자료구조는 모두 문자열의 효율적인 탐색과 저장에 관한 개념을 공유한다.
- 이진 탐색 트리를 사용하는 이유는 무엇인가?자료구조 · 알고리즘
- 최소 신장 트리(MST)를 구성하는 알고리즘으로 무엇을 선택하는가?자료구조 · 알고리즘
- 일반 이진트리 대신 이진탐색트리를 사용하는 이유는 무엇인가?자료구조 · 알고리즘