1. Trie
- 문자열의 구조를 저장할 때 주로 사용하는 자료구조로 해당 문자열 다음에 어떤 문자가 오는지 파악할 수 있음
2. 구현 과정
- 트라이 구조 만들기
function makeTrie(words) {
const root = {};
for (let word of words) {
let current = root;
for (const letter of word) {
if (!current[letter]) {
current[letter] = [0, {}];
}
current[letter][0] = 1 + (current[letter][0] || 0);
current = current[letter][1];
}
}
return root;
}
- Solution
function solution(words) {
let ans = 0;
const trie = makeTrie(words);
for (const word of words) {
let count = 0;
let current = trie;
for (const [index, letter] if [...word].entries()) {
count += 1;
if (current[letter] <= 1) {
break;
}
current = current[letter][1];
}
ans += count;
}
return ans;
}