개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.20 23:33

QuickHashStringIntHash::add 관련 질문

목록
  • 엔지니어링고수 2일 전 2025.07.20 23:33
  • 24
    1
제가 공부 중인 QuickHashStringIntHash 클래스의 add 메서드에 대한 질문이 있습니다.

QuickHashStringIntHash 클래스는 두 개의 키를 사용하여 해시 테이블을 구현하는 클래스로, 하나는 문자열이고 다른 하나는 정수입니다.

add 메서드는 해시 테이블에 새로운 키-값 쌍을 추가하는 역할을 합니다.

제가 이해하기에 add 메서드는 해시 테이블에 새로운 키-값 쌍을 추가하기 전에, 해당 키가 이미 존재하는지 여부를 확인해야 합니다.

만약 해당 키가 이미 존재한다면, add 메서드는 기존 키에 대한 값을 업데이트해야 합니다.

제가 이해하기에, add 메서드는 해시 함수를 사용하여 키를 해시화 한 후, 해시 테이블의 해당 인덱스에 값을 저장합니다.

그런데, add 메서드의 해시 함수를 사용할 때, 어떤 알고리즘을 사용해야 하는지, 그리고 해시 함수의 출력이 해시 테이블의 인덱스에 사용될 때, 어떤 문제가 발생할 수 있는지 궁금합니다.

해시 함수의 선택과 해시 테이블의 인덱스에 해시 함수의 출력을 사용할 때의 문제점에 대해 알려주세요.

    댓글목록

    profile_image
    나우호스팅  2일 전



    QuickHashStringIntHash 클래스의 add 메서드에서 해시 함수를 사용할 때, 일반적으로 FNV-1a 해시 함수나 MurmurHash3 해시 함수를 사용합니다.

    FNV-1a 해시 함수는 다음과 같은 특징을 가지고 있습니다.

    - 32비트 해시 함수입니다.
    - 해시 함수의 출력은 32비트 정수입니다.
    - 해시 함수는 문자열과 정수를 모두 처리할 수 있습니다.

    MurmurHash3 해시 함수는 다음과 같은 특징을 가지고 있습니다.

    - 32비트, 64비트 해시 함수가 모두 제공됩니다.
    - 해시 함수의 출력은 32비트 또는 64비트 정수입니다.
    - 해시 함수는 문자열과 정수를 모두 처리할 수 있습니다.

    해시 함수의 출력이 해시 테이블의 인덱스에 사용될 때, 다음과 같은 문제가 발생할 수 있습니다.

    - 해시 충돌: 해시 함수의 출력이 동일한 인덱스를 가리키는 경우, 해시 테이블의 키-값 쌍이 중복되어 저장됩니다.
    - 해시 테이블의 크기: 해시 테이블의 크기가 너무 작을 경우, 해시 테이블의 인덱스가 충돌할 수 있습니다.

    해시 충돌을 해결하기 위해, 다음과 같은 방법을 사용할 수 있습니다.

    - 충돌 해결 알고리즘: 충돌이 발생했을 때, 해시 테이블의 인덱스를 변경하여 충돌을 해결합니다.
    - 해시 테이블의 크기 증가: 해시 테이블의 크기를 증가하여 충돌을 줄입니다.

    해시 테이블의 크기를 결정할 때, 다음과 같은 요소를 고려해야 합니다.

    - 해시 테이블의 용량: 해시 테이블의 크기가 너무 작을 경우, 충돌이 발생할 수 있습니다.
    - 해시 테이블의 성능: 해시 테이블의 크기가 너무 클 경우, 성능이 저하될 수 있습니다.

    2025-07-20 23:34

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 38,202건 / 27 페이지

검색

게시물 검색