๐Ÿฅž BE
home

208_Implement Trie [Prefix Tree]

๋‹ด๋‹น์ž
์™„๋ฃŒ ์—ฌ๋ถ€
Solved
์š”์•ฝ
๋‚ ์งœ
2024/08/09
ํƒœ๊ทธ
ํž™
๋‚œ์ด๋„
Medium
์ถœ์ฒ˜
LeetCode

์ฝ”๋“œ

package tree; class Lt208 { class Trie { TrieNode root; // ํด๋ž˜์Šค ์ƒ์„ฑ ์‹œ ๋ฃจํŠธ๋กœ ๋นˆ ํŠธ๋ผ์ด ๋…ธ๋“œ ์ƒ์„ฑ public Trie() { root = new TrieNode(); } // ๋‹จ์–ด ์‚ฝ์ž… public void insert(String word) { // ๋ฃจํŠธ๋ถ€ํ„ฐ ์‹œ์ž‘ TrieNode now = root; // ๋‹จ์–ด์˜ ๋ฌธ์ž๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์ž์‹ ๋…ธ๋“œ ๊ตฌ์„ฑ for (char c : word.toCharArray()) { // ํ•ด๋‹น ๋ฌธ์ž์˜ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์‹ ๊ทœ trie ๋…ธ๋“œ ์ƒ์„ฑ // ์ธ๋ฑ์Šค๋Š” 'a': 0, 'z': 25 if (now.children[c - 'a'] == null) { now.children[c - 'a'] = new TrieNode(); } // ์ž์‹ ๋…ธ๋“œ๋ฅผ ํ˜„์žฌ ๋…ธ๋“œ๋กœ ๊ต์ฒด now = now.children[c - 'a']; } now.word = true; } // ๋‹จ์–ด ์กด์žฌ ์—ฌ๋ถ€ ํŒ๋ณ„ public boolean search(String word) { TrieNode now = root; for (char c : word.toCharArray()) { if (now.children[c - 'a'] == null) { return false; } now = now.children[c - 'a']; } return now.word; } // ๋ฌธ์ž์—ด๋กœ ์‹œ์ž‘ ๋‹จ์–ด ์กด์žฌ ์—ฌ๋ถ€ ํŒ๋ณ„ public boolean startsWith(String prefix) { TrieNode now = root; for (char c : prefix.toCharArray()) { if (now.children[c - 'a'] == null) { return false; } now = now.children[c - 'a']; } // ํƒ์ƒ‰์ด ์ข…๋ฃŒ๋˜๋ฉด ํ•ญ์ƒ true ๋ฆฌํ„ด, ์‹œ์ž‘ ์—ฌ๋ถ€๋งŒ ํŒ๋ณ„ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ๋‹จ์–ด ์™„์„ฑ ์—ฌ๋ถ€๊ฐ€ false์—ฌ๋„ ๊ด€๊ณ„ X return true; } } }
Java
๋ณต์‚ฌ
package tree; class TrieNode { // ๋‹จ์–ด ์™„์„ฑ ์—ฌ๋ถ€ boolean word; // ํŠธ๋ผ์ด์˜ ์ž์‹ ๋…ธ๋“œ๋“ค TrieNode[] children; public TrieNode() { // ์ž์‹ ๋…ธ๋“œ๋Š” ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜ 26๊ฐœ๊นŒ์ง€ ๊ฐ€๋Šฅ children = new TrieNode[26]; word = false; } }
Java
๋ณต์‚ฌ

๋ฌธ์ œ ํ•ด๊ฒฐ ์•„์ด๋””์–ด

ํŠธ๋ผ์ด์˜ ์‚ฝ์ž…, ์‚ญ์ œ, ๋“ฑ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ•œ๋‹ค.