수강한 강의
Chapter 09 자료구조 (해쉬)
- 블록체인에도 쓰이는 해쉬 테이블
학습 후기
평소에 자주 쓰던 HashMap 클래스에 대해 자세히 알아보고 구현 및 어떻게 동작하는지 자세히 알게 되었다.
이전까지의 강의는 쉽게 구현할 수 있어서 계속 더 듣고 싶었지만 이번 강의부터는 뭔가 조금 어렵게 느껴졌다. HashTable 구현하기가 쉽지 않았다. HashTable을 직접 구현해보면서 Java에서
Map<String, Object> map = new HashMap<>();
map.put("a", "a");
System.out.println(map.get("a"));
으로만 작성해 쓰던걸 해쉬 함수도 여러 개 있고 거기에 데이터를 저장할 때 충돌이 나는 충돌 해결 알고리즘을 직접 구현해보면서 어떤 방법이 좋을지 많이 고민해 보았던 강의였다.
간단 해쉬 함수를 구현하였다. String으로 된 키 값을 받으면 char 배열로 바꾸고 해당 문자열을 전부 int 값으로 더해 해쉬 테이블 크기로 나누어 데이터를 저장하였다. 이렇게 간단하게 구현하니 해쉬 테이블의 크기를 10으로 주었을 때 key a, b, c로 저장하니 데이터를 가지고 올 때 get("a")와 get("C")가 같은 값을 들고 왔다. 그 이유는 a가 97, C가 67의 값을 가지기 때문에 사이즈 10의 해쉬 테이블에서 같은 위치 값을 가지게 된다. 이런 충돌을 방지하기 위해 충돌 해결 알고리즘을 작성해 보았고 간단하게는 해쉬 테이블 사이즈를 늘려주는 것 많으로도 해결이 되었다. 강의에서 알려준 해쉬 충돌 알고리즘을 직접 구현해보고 원리를 알 수 있어 좋았다.
수강 인증샷
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'공부 > 패스트 캠퍼스 챌린지' 카테고리의 다른 글
코딩테스트 - 패스트캠퍼스 챌린지 07일차 (0) | 2022.01.30 |
---|---|
코딩테스트 - 패스트캠퍼스 챌린지 06일차 (0) | 2022.01.29 |
코딩테스트 - 패스트캠퍼스 챌린지 04일차 (0) | 2022.01.27 |
코딩테스트 - 패스트캠퍼스 챌린지 03일차 (0) | 2022.01.26 |
코딩테스트 - 패스트캠퍼스 챌린지 02일차 (0) | 2022.01.25 |