문제 링크 (opens new window)

# 문제 설명

  1. 데이터 접근은 딕셔너리로
  2. prefix계산을 O(N)시간으로 해서 성능이 많이 떨어지는 코드인 것 같다.
class Trie {
    private var data: [String: Bool]

    init() {
        self.data = [:]
    }

    func insert(_ word: String) {
        self.data[word, default: false] = true
    }

    func search(_ word: String) -> Bool {
        self.data[word] ?? false
    }

    func startsWith(_ prefix: String) -> Bool {
        var keys: [String] = []
        for (key, value) in self.data {
            keys.append(key)
        }
        for key in keys {
            if key.count < prefix.count { continue }
            if key[key.startIndex..<key.index(key.startIndex, offsetBy: prefix.count)] == prefix { return true }
        }
        return false
    }
}