learned

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ฌธ์ž์—ด ํƒ์ƒ‰์šฉ ์ž๋ฃŒ๊ตฌ์กฐ Trie

๊ธฐ๋ณธํ˜•

class Trie {
    data class TrieNode(var isEndOfWord : Boolean, val children : MutableMap<Char,TrieNode>)

    val root = TrieNode(false, mutableMapOf())

    fun insert(word : String) {
        var currentNode = root
        word.forEach{ char -> 
            val child = currentNode.children[char] ?: TrieNode(false, mutableMapOf())
            currentNode.children[char] = child
            currentNode = child
        }
        currentNode.isEndOfWord = true
    }

    fun search(word : String) : Boolean {
		var currentNode = root
        word.forEach{ char -> 
            val child = currentNode.children[char] ?: return false
            currentNode = child
        }
        return currentNode.isEndOfWord
    }
}