트라이(Trie)
0. 요약
class Node {
constructor(value = "", end = false) {
this.value = value;
this.end = end;
this.child = new Map();
this.includesWords = [];
}
}
class Trie {
constructor() {
this.root = new Node();
}
// 문자열 삽입하기
insert(string) {
let cur_node = this.root;
for (const char of string) {
if (!cur_node.child.has(char)) {
cur_node.child.set(char, new Node(cur_node.value + char));
}
cur_node = cur_node.child.get(char);
cur_node.includesWords.push(string);
}
cur_node.end = true;
}
// 문자열 검색하기
search(string) {
let cur_node = this.root;
for (const char of string) {
if (cur_node.child.has(char)) {
cur_node = cur_node.child.get(char);
} else return null;
}
return cur_node.includesWords[0] === string ? cur_node : null;
}
// 특정 단어만 검색되어지는 최소 입력 횟수 구하기
min_len(string) {
let cur_node = this.root;
let len = 0;
for (const char of string) {
cur_node = cur_node.child.get(char);
len++;
if (cur_node.includesWords.length === 1) return len;
}
return len;
}
}1. 개요
2. 트라이란?

2-1. 트라이의 특징
3. 트라이 구현하기
3-1. 트라이의 기본 구조
3-2. 문자열 삽입하기
3-3. 문자열 검색하기
3-4. 특정 단어만 검색되어지는 최소 입력 횟수 구하기
4. Conclusion
참고
Last updated