[기본기] Hashing 제대로 알기
Dictionary의 키는 왜 Hashable 타입인가요?
- 왜 Dictionary/Set의 탐색은 O(1)인가?
- 왜 Dictionary 탐색의 최악의 경우는 O(n)인가?
- Hashable의 hashValue는 왜 Int 인가?
- Hashing을 왜 하는가?
- 좋은 해싱 알고리즘이 필요한 이유는?
위 질문에 대한 답을 명확히 하기 힘들다면 Array만을 가지고 Dictionary를 직접 구현해보는 것을 추천한다. 그 과정에서 알게 되는 것들로 위 질문들에 대한 답을 찾을 수 있다.
요구사항은 아래와 같다.
- 자료 구조는 Array만 사용한다.
- Hashable 타입은 사용하지 않는다.
- 구현해야 하는 메서드
func value(forKey key: Key) -> Value? func insert(_ value: Value?, forKey key: Key) var count: Int { get }
Tags: swift, mutation, variable, constants