개발자 부부의 코딩클래스
HashTable #03 우리는 리스트를 이용한 체이닝을 구현 하였습니다. 보기에 큰 문제점은 없어 보이지만 해시의 장점 중 하나를 놓치게 되지요. 바로 해시의 탐색 장점을 활용하지 못하는 부분이 있다는 말입니다. 키를 이용해 값을 찾는 행위를 반복 중일 때, 키에 따른 해시값이 리스트에 의해 줄줄이 이어져 있다면 우리는 여전히 몇개가 될지 모르는 리스트들을 하나씩 차례로 확인해야하는 상황이 발생합니다. 키를 이용해 바로 접근이 용이한 해시 테이블에서는 아주 효율적 이지 못하다고 볼 수 있지요. 우리는 이제 이중 해싱 에 대하여 알아볼 겁니다. #이중 해싱해시 알고리즘을 이용해 주소 값을 낼 때 그 자리에 어떤 값이 이미 존재한다면, 어찌해야할까요? 저번 시간에 했던 것 처럼 리스트로 줄줄이 이어야할까요..
HashTable #02 자, 이번시간에는 해쉬테이블에 대해 조금만 깊게 들어가보겠습니다. 우리가 저번에 했던 나눗셈 법 은 너무 단순하군요. 아주 이해가 쉽지 않을 수가 없었습니다. 저번시간에 했던 내용을 계속해서 테스트하고 생각을 해보신 분이라면 분명히 이런 생각이 드실 겁니다. "잠깐만... 해쉬 값이 겹치는데? 서로 다른데이터를 어찌 관리하지?' 맞습니다. 서로 다른 입력 값에 대해 동일한 해시 값, 즉 해시 테이블 내의 동일한 주소를 반환할 경우도 생긴다는 말입니다!. 이것을 우리들은 충돌이라고 부르기도 합니다. 그렇다면 이 충돌을 해결 할 수 있는 방법은 어떤 방법이 있을까요. 사실 모든 문제를 해결 할 수 있는 해시알고리즘은 존재하지 않습니다!. 하지만 이러한 문제점이 일어날 가능성을 줄인 ..
#Hash 이게 우리가 하고자하는 해시랑 무슨 관련이 있을까요?. 고기 요리를 잘게 썰면 새로운 요리가 탄생하게 됩니다. 바로 이것이 해시의 본 뜻인것 같네요!. 쉽게 말해 해시란 어떤 값을 전혀 다른 새로운 값으로 바꿀 수 있다는 것을 의미합니다. " 그렇다면 그 데이터로 어떤 일에 쓰이나요?. " - 해시 테이블 - 암호화 - 데이터 축약 크게 이 세가지 용도로 쓰이게 됩니다. 고기요리로 비유를 들어 아시겠지만, 고기요리 (데이터) 를 잘게썰어 만든 고기요리(변형된 데이터) 즉 어떤 데이터를 전혀 새로운 모습의 데이터를 만들어 내서 암호화에 널리 쓰이고 있으며, 또한 이 변환된 데이터는 데이터가 아무리 길더라도 일정한 길이의 출력 데이터를 만들어 내기에 데이터가 원본에 비해 어마어마하게 축약되어 엄청..