Algorithm/Study

[Algorithm] ν•΄μ‹œ ν…Œμ΄λΈ”(Hash Table)

ν˜Έλ°€μ΄ 2022. 6. 9. 19:22

πŸ“Œ ν•΄μ‹œ ν…Œμ΄λΈ”(Hash Table)?

  • μ–΄λ–€ νŠΉμ • 값을 λ°›μœΌλ©΄ κ·Έ 값을 ν•΄μ‹œ ν•¨μˆ˜μ— 톡과 μ‹œμΌœ λ‚˜μ˜¨ μΈλ±μŠ€μ— μ €μž₯ν•˜λŠ” 자료ꡬ쑰
  • ν•΄μ‹œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΉμ • 값을 μ‹ μ†ν•˜κ²Œ μ°ΎλŠ” 자료ꡬ쑰
  • μžλ°”μŠ€ν¬λ¦½νŠΈ κ°μ²΄λŠ” ν•΄μ‹œ ν…Œμ΄λΈ”κ³Ό 같은 λ°©μ‹μœΌλ‘œ 킀와 ν•΄λ‹Ή ν‚€μ˜ μ—°κ΄€λœ 값을 μ •μ˜ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€.

 

βœ… ν•΄μ‹œ ν•¨μˆ˜ (Hash Function) = ν•΄μ‹œ(Hash)

μž„μ˜μ˜ 길이의 데이터λ₯Ό κ³ μ •λœ 길이의 λ°μ΄ν„°λ‘œ λ§€ν•‘ν•˜λŠ” ν•¨μˆ˜

  • ν•΄μ‹œ ν•¨μˆ˜μ˜ νŠΉμ„±
    • μ••μΆ•μ„±: λ‹€μ–‘ν•œ κ°€λ³€ 길이의 μž…λ ₯에 λŒ€ν•΄ κ³ μ •λœ 크기의 결과값을 λ°˜ν™˜ν•˜λŠ” μ„±μ§ˆμ„ 가진닀.
    • νš¨μœ¨μ„±: μ–΄λ–€ μž…λ ₯ 값에 λŒ€ν•΄μ„œλ„ λ§Žμ€ μžμ›κ³Ό μ‹œκ°„μ΄ μ†Œμš”λ˜μ§€ μ•Šκ³  μ²˜λ¦¬λ˜λŠ” μ„±μ§ˆμ„ 가진닀.
    • μ €ν•­μ„±: 결과값을 λ°”νƒ•μœΌλ‘œ μž…λ ₯ 값을 μ°ΎλŠ” 것이 λΆˆκ°€λŠ₯ν•œ μ„±μ§ˆμ„ 가진닀.

 

βœ… ν•΄μ‹œ 좩돌(Hash Collision) 

데이터λ₯Ό Key둜 κ°„μ†Œν™”ν•˜μ—¬ μ €μž₯ν•˜μ§€λ§Œ λ‹€λ₯Έ γ…γ„΄μš©μ˜ 데이터가 같은 ν‚€λ₯Ό κ°–λŠ” 경우 μƒκΈ°λŠ” 것을 ν•΄μ‹œ 좩돌이라고 ν•œλ‹€.

ν•΄μ‹œν…Œμ΄λΈ”μ˜ μ„±λŠ₯λŠ₯을 λ–¨μ–΄λœ¨λ¦¬λŠ” 원인이 λœλ‹€.

  • 해결방법
    • ν•΄μ‹œ ν•¨μˆ˜ λ³€κ²½: 더 큰 숫자의 곡간과 λͺ¨λ“ˆ μ‚°μˆ  값을 μ΄μš©ν•΄ μΆ©λŒμ„ μ΅œμ†Œν™”ν•œλ‹€.
      (같은 μˆ˜κ°€ λ‚˜μ˜€λŠ” 경우의 수λ₯Ό 쀄인닀.)
    • 자료ꡬ쑰 ν™•μž₯: μ„ ν˜• 쑰사법, μ΄μ€‘ν•΄μ‹œ, 채이닝
  • κ΅¬ν˜„ λ©”μ„œλ“œ(Method)
    • clear
    • size
    • getBuffer
    • print
    • put
    • remove
    • get

'Algorithm > Study' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Algorithm] νž™(Heap)  (2) 2022.06.26
[μΊμ‹œ μ•Œκ³ λ¦¬μ¦˜] LRU (Least Recently Used Algorithm)  (0) 2022.02.10