도구스텍스트

트라이(접두사 트리) 계산기

단어 목록으로 트라이를 만들어 노드 수·깊이·공통 접두사를 계산하고 나무 모양을 그려 줍니다. 접두사를 함께 써서 몇 칸을 아꼈는지, 접두사 검색이 몇 걸음에 끝나는지도 함께 보여 줍니다.

단어 목록

공백·쉼표·줄바꿈으로 나눕니다. 같은 단어는 한 번만 셉니다.

트라이 노드 수

11개

단어 7개 · 글자 수 합 24개 · 13개 아꼈습니다

단어 수7개
글자 수의 합 (그대로 담았다면)24칸
트라이 노드 수11개
접두사를 함께 써서 아낀 칸13칸 (54%)
가장 깊은 단어4글자
갈래의 끝(잎) 수6개
모두가 함께 갖는 접두사없습니다
글자 수는 24개인데 노드는 11개뿐입니다. 접두사가 같은 단어들이 그 부분을 함께 쓰기 때문입니다. 이것이 트라이의 값어치이고, 그래서 접두사가 겹치는 자료에서만 이득이 납니다. 무작위 문자열처럼 겹치는 것이 없으면 아끼는 것 없이 노드만 잔뜩 생기고, 노드마다 자식 목록을 들고 있어야 해서 오히려 메모리를 더 씁니다.

자동완성이 하는 일입니다. 비우면 전부 나옵니다.

걸리는 단어5개 · car, card, care, cart, cat
내려간 걸음 수2걸음
자동완성이 한 번 내려가는 것으로 끝납니다. 접두사를 따라 2걸음 내려간 다음, 그 아래 매달린 단어를 모으면 끝입니다. 해시 테이블로는 이 일을 못 합니다 — 해시는 «정확히 같은 것»만 찾을 수 있고 «비슷하게 시작하는 것»은 전부 훑어야 하기 때문입니다. 찾는 비용이 담긴 단어 수와 무관하게 찾는 단어의 길이에만 달려 있는 것도 트라이의 성질입니다.

c

a

│ │ r단어

│ │ │ d단어

│ │ │ e단어

│ │ │ t단어

│ │ t단어

d

o

│ │ g단어

│ │ t단어

한글은 세는 단위에 따라 나무 모양이 달라집니다. 음절로 담으면 «가방»과 «가족»이 «가»를 함께 쓰지만, «강»과 «가»는 서로 다른 글자라 아무것도 나누지 못합니다. 자모로 풀면 «강»이 ㄱ-ㅏ-ㅇ이라 «가»(ㄱ-ㅏ)를 접두사로 가지므로, 초성 검색이 자모 트라이에서 자연스럽게 나옵니다. 대신 나무가 깊어지고 노드가 늘어납니다. 지금은 음절·글자 단위로 담았습니다.

사용 방법

  1. 1단어를 공백이나 줄바꿈으로 나눠 넣습니다.
  2. 2한글을 음절로 담을지 자모로 풀지 고릅니다. 나무 모양이 달라집니다.
  3. 3노드 수와 글자 수의 합을 견줘 접두사를 함께 써서 얼마나 아꼈는지 봅니다.
  4. 4접두사를 넣어 몇 개가 걸리는지, 몇 걸음에 끝나는지 확인합니다.

자주 묻는 질문

단어를 한 글자씩 가지로 뻗어 담는 나무로, 접두사가 같은 단어들이 그 부분을 함께 씁니다. cat·car·card를 담으면 글자 수는 10개지만 노드는 c·a·t·r·d 다섯 개뿐입니다. 그래서 «이 접두사로 시작하는 단어 모두 찾기»가 한 번 내려가는 것으로 끝납니다.

해시는 «정확히 같은 것»만 찾을 수 있기 때문입니다. «비슷하게 시작하는 것»을 찾으려면 전부 훑어야 하지만, 트라이는 접두사를 따라 내려가기만 하면 됩니다. 자동완성이 바로 이 질문이고, 찾는 비용도 담긴 단어 수와 무관하게 찾는 단어의 길이에만 달려 있습니다.

노드마다 자식 목록을 들고 있어야 해서 메모리가 많이 듭니다. 접두사가 거의 겹치지 않는 목록에서는 아끼는 것 없이 노드만 잔뜩 생겨 오히려 손해입니다. 트라이는 접두사가 겹치는 자료에서만 값을 합니다.

무엇을 찾고 싶은지에 따라 다릅니다. 음절로 담으면 «가방»과 «가족»이 «가»를 함께 쓰지만 «강»과 «가»는 서로 다른 글자라 아무것도 나누지 못합니다. 자모로 풀면 «강»이 ㄱ-ㅏ-ㅇ이라 «가»를 접두사로 가져 초성 검색이 자연스럽게 되지만, 나무가 깊어지고 노드가 늘어납니다.

노드를 새로 만들지 않고 지나가는 자리에 «여기서 끝나는 단어가 있다»고 표시만 합니다. 가·가방·가방끈을 담으면 노드는 가·방·끈 세 개이고 세 자리 모두 단어로 표시됩니다. 그래서 접두사 검색에서 자기 자신도 함께 걸립니다.

전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 같은 단어를 여러 번 넣어도 한 번으로 셉니다. 트라이는 집합이지 개수를 세는 자료구조가 아닙니다.
  • 아낀 칸은 «글자 수의 합 − 노드 수»입니다. 실제 메모리는 노드마다 자식 목록과 표시 비트가 붙어 이보다 더 들며, 이 값은 구조가 얼마나 겹치는지를 보는 지표입니다.
  • 입력은 유니코드 NFC로 정규화한 뒤 자릅니다. 자모 단위는 초·중·종성으로 풀되 겹받침은 한 덩어리로 봅니다 — «값»은 ㄱ·ㅏ·ㅄ 세 개입니다.
  • 단어는 200개, 한 단어는 40글자까지 봅니다. 나무 그림은 60줄까지만 그립니다.
  • 실제 구현에서는 노드가 하나뿐인 사슬을 하나로 접는 압축 트라이(래딕스 트리)를 써서 메모리를 줄입니다. 여기서는 구조가 드러나도록 접지 않고 그립니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.