본문 바로가기
Tech Interview/Data Structure

[Python] Trie 자료구조

by 부르르 2021. 10. 10.

Trie(트라이) 자료구조는 문자열 집합에서 키를 효율적으로 저장하고 조회하는데 사용된다.

스펠 체커나 자동완성 기능에서 사용된다.

파이썬에서는 딕셔너리 자료구조를 이용해 쉽게 구현할 수 있다.

  • insert (단어 삽입)
    • 단어의 키(문자)가 커서에 존재하지 않는 경우 해당 키로 딕셔너리를 생성하고, 커서 위치를 업데이트 해준다.
    • 단어 삽입이 완료되면 * 키를 생성해서 끝임을 표기한다.
  • search (단어 조회)
    • 단어의 키(문자)가 커서에 존재하지 않는 경우 False를 반환하고, 커서 위치를 업데이트 해준다.
    • 단어 순회가 완료되었을 때 * 키가 커서에 있을 경우 True를 반환하고 없을 경우 False를 반환한다.
  • startswith (접두어 조회)
    • 단어의 키(문자)가 커서에 존재하지 않는 경우 False를 반환하고, 커서 위치를 업데이트 해준다.
    • 단어 순회가 완료되었을 때 True를 반환한다.
class Trie: ​​​​def __init__(self): ​​​​​​​​self.trie = dict() ​​​​def insert(self, word: str) -> None: ​​​​​​​​cur = self.trie ​​​​​​​​for ch in word: ​​​​​​​​​​​​if ch not in cur.keys(): ​​​​​​​​​​​​​​​​cur[ch] = dict() ​​​​​​​​​​​​cur = cur[ch] ​​​​​​​​cur['*'] = True ​​​​def search(self, word: str) -> bool: ​​​​​​​​cur = self.trie ​​​​​​​​for ch in word: ​​​​​​​​​​​​if ch not in cur.keys(): ​​​​​​​​​​​​​​​​return False ​​​​​​​​​​​​cur = cur[ch] ​​​​​​​​if '*' in cur.keys(): ​​​​​​​​​​​​return True ​​​​​​​​else: ​​​​​​​​​​​​return False ​​​​def startsWith(self, prefix: str) -> bool: ​​​​​​​​cur = self.trie ​​​​​​​​for ch in prefix: ​​​​​​​​​​​​if ch not in cur.keys(): ​​​​​​​​​​​​​​​​return False ​​​​​​​​​​​​cur = cur[ch] ​​​​​​​​return True
728x90
반응형

댓글