개발자 Q&A

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

2025.07.05 21:52

QuickHashIntStringHash::update 함수에 대한 도움을 부탁드립니다.

목록
  • 스레드마스터 14일 전 2025.07.05 21:52
  • 66
    1
제가 공부 중인 QuickHashIntStringHash 클래스의 update 함수에 대해 이해가 잘 안 가는 부분이 있습니다. update 함수는 기존의 해시 테이블에 새로운 키-값 쌍을 추가하거나 기존의 키-값 쌍을 업데이트 하는 역할을 합니다.

하지만, update 함수 내부의 로직을 이해하기 위해서는 해시 함수, 충돌 해결 알고리즘, 키-값 쌍의 검색 및 업데이트 로직에 대한 이해가 필요하다고 합니다.

해시 함수에 대한 이해는 이해가 간단한데, 충돌 해결 알고리즘에 대한 이해가 가장 어려운 부분입니다.

충돌 해결 알고리즘에 대해 더 자세히 알려주실 수 있을까요?

특히, 해시 테이블에 새로운 키-값 쌍을 추가할 때 충돌이 발생하는 경우, 어떻게 처리하는지 알려주실 수 있을까요?

또한, 기존의 키-값 쌍을 업데이트 할 때, 어떻게 처리하는지 알려주실 수 있을까요?

제가 이해한 바로는, 기존의 키-값 쌍이 존재하는 경우, 그 키-값 쌍을 업데이트 하는 것이 맞는 것 같습니다.

하지만, 이 업데이트 로직에 대한 구체적인 내용을 알려주실 수 있을까요?

또한, 해시 테이블에 새로운 키-값 쌍을 추가할 때, 충돌이 발생하는 경우, 어떻게 처리하는지 알려주실 수 있을까요?

제가 이해한 바로는, 충돌이 발생하는 경우, 새로운 키-값 쌍을 추가할 때, 기존의 키-값 쌍을 삭제하고, 새로운 키-값 쌍을 추가하는 것이 맞는 것 같습니다.

하지만, 이 충돌 해결 로직에 대한 구체적인 내용을 알려주실 수 있을까요?

제가 이해한 바로는, 해시 테이블에 새로운 키-값 쌍을 추가할 때, 충돌이 발생하는 경우, 새로운 키-값 쌍을 추가할 때, 기존의 키-값 쌍을 삭제하고, 새로운 키-값 쌍을 추가하는 것이 맞는 것

    댓글목록

    profile_image
    나우호스팅  14일 전



    해시 테이블의 충돌 해결 알고리즘은 여러 가지가 있지만, 일반적으로 사용되는 방법은 두 가지입니다.

    1. 선형探査(Linear Probing): 충돌이 발생한 경우, 다음 해시 테이블의 인덱스에 키-값 쌍을 추가하거나 업데이트 합니다. 예를 들어, 해시 테이블의 크기가 10이고, 해시 함수가 키를 3으로 해시한 경우, 충돌이 발생한 경우, 다음 인덱스인 4에 키-값 쌍을 추가하거나 업데이트 합니다.

    2. 재해시(Rehashing): 충돌이 발생한 경우, 새로운 해시 함수를 사용하여 새로운 인덱스를 계산하고, 해당 인덱스에 키-값 쌍을 추가하거나 업데이트 합니다.

    해시 테이블에 새로운 키-값 쌍을 추가할 때 충돌이 발생하는 경우, 다음과 같은 방법을 사용할 수 있습니다.

    - 충돌이 발생한 경우, 새로운 키-값 쌍을 추가할 때, 기존의 키-값 쌍을 삭제하고, 새로운 키-값 쌍을 추가하는 것이 맞습니다. 그러나, 이 방법은 해시 테이블의 성능을 저하시킬 수 있습니다. 예를 들어, 해시 테이블의 크기가 10이고, 충돌이 발생한 경우, 새로운 키-값 쌍을 추가할 때, 기존의 키-값 쌍을 삭제하고, 새로운 키-값 쌍을 추가하는 경우, 해시 테이블의 크기가 9로 줄어들어, 다음에 충돌이 발생할 때, 해시 테이블의 크기가 8로 줄어들어, 이 과정을 반복하면, 해시 테이블의 크기가 1로 줄어들어, 해시 테이블의 성능이 저하됩니다.

    - 충돌이 발생한 경우, 새로운 키-값 쌍을 추가할 때, 충돌이 발생한 인덱스에 키-값 쌍을 추가하거나 업데이트 합니다. 그러나, 이 방법은 해시 테이블의 성능을 저하시킬 수 있습니다. 예를 들어, 해시 테이블의 크기가 10이고, 충돌이 발생한 경우, 새로운 키-값 쌍을 추가할 때, 충돌이 발생한 인덱스에 키-값 쌍을 추가하거나 업데이트 하는 경우, 해시 테이블의 크기가 10으로 유지되지만, 해시 테이블의 성능이 저하됩니다.

    기존의 키-값 쌍을 업데이트 할 때, 다음과 같은 방법을 사용할 수 있습니다.

    - 기존의 키-값 쌍이 존재하는 경우, 그 키-값 쌍을 업데이트 하는 것이 맞습니다. 그러나, 이 방법은 해시 테이블의 성능을 저하시킬 수 있습니다. 예를 들어, 해시 테이블의 크기가 10이고, 기존의 키-값 쌍이 존재하는 경우, 그 키-값 쌍을 업데이트 하는 경우, 해시 테이블의 크기가 10으로 유지되지만, 해시 테이블의 성능이 저하됩니다.

    - 기존의 키-값 쌍이 존재하는 경우, 그 키-값 쌍을 삭제하고, 새로운 키-값 쌍을 추가하는 것이 맞습니다. 그러나, 이 방법은 해시 테이블의 성능을 저하시킬 수 있습니다. 예를 들어, 해시 테이블의 크기가 10이고, 기존의 키-값 쌍이 존재하는 경우, 그 키-값 쌍을 삭제하고, 새로운 키-값 쌍을 추가하는 경우, 해시 테이블의 크기가 9로 줄어들어, 다음에 충돌이 발생할 때, 해시 테이블의 크기가 8로 줄어들어, 이 과정을 반복하면, 해시 테이블의 크기가 1로 줄어들어, 해시 테이블의 성능이 저하됩니다.

    해시 테이블의 충돌 해결 알고리즘은 여러 가지가 있지만, 선형 탐사와 재해시가 가장 일반적으로 사용됩니다. 해시 테이블에 새로운 키-값 쌍을 추가할 때 충돌이 발생하는 경우, 새로운 키-값 쌍을 추가할 때, 기존의 키-값 쌍을 삭제하고, 새로운 키-값 쌍을 추가하는 것이 맞지 않습니다. 그러나, 이 방법은 해시 테이블의 성능을 저하시킬 수 있습니다. 기존의 키-값 쌍을 업데이트 할 때, 기존의 키-값 쌍을 업데이트 하는 것이 맞습니다. 그러나, 이 방법은 해시 테이블의 성능을 저하시킬 수 있습니다.

    2025-07-05 21:53

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

검색

게시물 검색