패스트캠퍼스 챌린지 5일차
[강의] 다음은 패스트 캠퍼스 알고리즘 / 기술면접 완전 정복 올인원 패키지를 통해 학습 및 정리한 내용입니다.
해쉬 테이블의 장점
1. 데이터 저장 및 읽기 속도가 빠르다
2. 해쉬는 키에 대한 데이터가 있는지 확인이 쉽다
단점
1. 일반적으로 저장공간이 많이 필요하다.
2. 여러 키에 해당하는 주소가 동일하면 충돌된다. 따라서 별도의 자료구조가 필요하다.
주요 용도
1. 검색이 많이 필요할 경우
2. 저장, 삭제, 읽기가 빈번할 경우
3. 캐쉬 구현시(중복 확인이 쉽다)
지난 번 실습에서는 내장함수 ord를 통해 문자의 유니코드 값을 불러와 키로 적용했는데, 이번에는 파이썬의 hash() 함수를 사용해서 특정 값을 불러왔다. 하지만 실행할 때마다, 값이 달라질 수 있기 때문에 보통은 사용되지 않는다고 한다. 그 외에 필요한 함수를 사용해서 해쉬 테이블 자료구조와 데이터 저장 및 불러오기 기능을 구현해보았다.
해쉬 테이블 충돌 해결 알고리즘
해쉬 테이블의 가장 큰 문제가 바로 충돌이다. 해쉬 주소값이 중복될 경우 충돌이 일어나는데 이를 해결하기 위해 Chaining 기법과 Linear Probing 기법을 적용해볼 수 있다. 위에서는 Chaining 기법으로 리스트로 연결해주어 충돌되는 경우 리스트로 연결해 해당 주소값에도 여러개의 값을 입력 받을 수 있게 했다.
해쉬 테이블을 직접 구현해보는 과정에서 단계적으로 이해할 수 있었고 if 문과 for 문 그리고 3차원 리스트를 작성해보며 파이썬에 대해 더 익숙해지게 됐다. 또한 Chaining 기법에서 링크드 리스트를 적용할 수도 있었지만 파이썬 문법을 통해 리스트로 연결해볼 수 있어 간단히 구현해볼 수 있었다.
패스트캠퍼스 [직장인 실무교육]
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.