Technical Interview Master Plan [11] - Trie는 외웠는데 왜 면접에서 자동완성 문제를 못 푸는가
빅테크 코딩 인터뷰에서 Trie가 나왔을 때, 구현보다 중요한 포인트들.
트라이(Tries)
(직접 받았던 애플 Xcode Team - Technical Interview 기출 문제 포함)
언제 트라이를 사용하는가?
트라이의 주된 용도는 효율적인 prefix(접두사) 검색을 처리하는 것이다. 면접 문제에서 공통 prefix를 공유하는 모든 문자열을 찾으라고 하면, 트라이는 아마 가장 적합한 자료구조일 가능성이 크다. 트라이는 단어 검증(word validation) 에도 유용해서, 문자열 집합 안에 어떤 단어가 존재하는지 빠르게 확인할 수 있게 해준다. 또한 문자열들 사이의 공유 prefix 를 활용하여 중복을 줄임으로써 데이터 저장도 최적화하는 데 도움을 준다.
실제 시나리오
자동완성(Autocomplete)
단어를 입력하기 시작하면, 어떤 시스템들은 가능한 완성 후보를 빠르게 제안하기 위해 트라이를 사용한다. 트라이의 각 노드는 하나의 문자를 나타내며, 입력하는 동안 시스템은 입력된 문자들을 기준으로 트라이를 순회한다. 이렇게 하면 입력한 prefix로 시작하는 가능한 모든 단어 또는 구를 효율적으로 가져올 수 있어, 빠른 자동완성 제안을 가능하게 한다.
Introduction to Tries
트라이는 prefix tree(접두사 트리) 라고도 불리며, 공유 prefix를 활용해 문자열을 효율적으로 저장하는 특수한 트리 형태의 자료구조이다.
트라이가 어떻게 동작하는지 이해하기 위해, 문자열 "internet" 을 생각해보자. 이 문자열은 연결된 노드들의 순서열로 저장할 수 있고, 여기서 각 노드는 문자열의 한 문자를 나타낸다.


