์ž๋ฃŒ ๊ตฌ์กฐ

category:Programming
instructor:๋‚จ์›ํ™
provide:KOCW,๊ฑด๊ตญ๋Œ€ํ•™๊ต

KOCW์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฑด๊ตญ๋Œ€ ๋‚จ์›ํ™ ๊ต์ˆ˜์˜ ๊ฐ•์˜.

ํ•ด์‹ฑ

date:
2025-09-05
order:
20

ํ•ด์‹œํ…Œ์ด๋ธ”(Hash Table)

ํ•ด์‹ฑ์˜ ๋™๊ธฐ: TLB์™€์˜ ์œ ์‚ฌ์„ฑ

CPU๊ฐ€ ์—ฐ์‚ฐ์„ ํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค. ํ˜„๋Œ€ ์ปดํ“จํ„ฐ๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹คย ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์ฃผ์†Œ ๋ฅผ ๋ถ€์—ฌํ•˜๋Š”๋ฐ, ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ํšจ์œจ์„ฑ๊ณผ ๋ณด์•ˆ์ƒ ์žฅ์ ์ด ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ CPU๊ฐ€ ์‹ค์ œ ์—ฐ์‚ฐ์„ ํ•  ๋•Œ๋Š” ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด TLB(Translation Lookaside Buffer) ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

TLB๋Š” ๊ฐ€์ƒ ์ฃผ์†Œ์™€ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋งคํ•‘ํ•œ ํ…Œ์ด๋ธ”๋กœ, ๋น ๋ฅธ ์ฃผ์†Œ ๋ณ€ํ™˜์„ ์ œ๊ณตํ•œ๋‹ค. ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋„ ์ด์™€ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ด์„œ ๊ธฐ์กด ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค.

ํ•ด์‹ฑ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ : ํ‰๊ท  O(1) ์ตœ์•… O(n)

ํ•ด์‹ฑ์ด ํ•„์š”ํ•œ ์ด์œ 

์˜ˆ์‹œ: ์ฒ˜์Œ์œผ๋กœ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž ์ฐพ๊ธฐ

๋ฌธ์ž์—ด์—์„œ ์ฒ˜์Œ์œผ๋กœ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ƒ๊ฐํ•ด๋ณด์ž.

๋ฐฉ๋ฒ• 1: ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ

for i in range(len(s)):
    for j in range(i+1, len(s)):
        if s[i] == s[j]:
            return s[i]

์‹œ๊ฐ„ ๋ณต์žก๋„: O(nยฒ)

๋ฐฉ๋ฒ• 2: ๋ฐฐ์—ด ์นด์šดํ„ฐ ์‚ฌ์šฉ

count = [0] * 128  # ASCII ๋ฌธ์ž ๊ฐœ์ˆ˜
for char in s:
    count[ord(char)] += 1
    if count[ord(char)] == 2:
        return char

์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)

๋ฌธ์ž์˜ ๊ฒฝ์šฐ ASCII ์ฝ”๋“œ๋กœ ์œ ํ•œํ•œ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ๋ฏธ๋ฆฌ ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒย ์ž์—ฐ์ˆ˜์ฒ˜๋Ÿผ ๊ฐ€๋Šฅํ•œ ์ „์ฒด ์ง‘ํ•ฉ U์˜ ํฌ๊ธฐ๊ฐ€ ์‹ค์ œ ์‚ฌ์šฉ๋˜๋Š” ์ง‘ํ•ฉ K์˜ ํฌ๊ธฐ๋ณด๋‹ค ์›”๋“ฑํžˆ ํฐ ๊ฒฝ์šฐ์—๋Š” ํ•ด์‹ฑ์ด ์‚ฌ์šฉ๋œ๋‹ค.

ํ•ด์‹œํ…Œ์ด๋ธ”์˜ ๊ตฌ์„ฑ ์š”์†Œ

1. ํ•ด์‹œํ…Œ์ด๋ธ” (Hash Table)

ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค.

  • ํ‚ค(Key): ๋ฐ์ดํ„ฐ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ณ ์œ ํ•œ ๊ฐ’
  • ๊ฐ’(Value): ์‹ค์ œ ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ
  • ์ธ๋ฑ์Šค ๊ธฐ๋ฐ˜ ์ ‘๊ทผ: ํ‰๊ท  O(1) ์‹œ๊ฐ„์— ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ฐ€๋Šฅ

2. ํ•ด์‹œํ•จ์ˆ˜ (Hash Function)

ํ•ด์‹ฑ์—์„œ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ์š”์†Œ๋กœ, ํ‚ค๋ฅผ ํ•ด์‹œํ…Œ์ด๋ธ”์˜ ์ธ๋ฑ์Šค๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋‹ค.

ํ•ด์‹œํ•จ์ˆ˜์˜ ์ค‘์š”ํ•œ ํŠน์„ฑ:

  • ๋น ๋ฅธ ์—ฐ์‚ฐ: ํ•ด์‹œํ•จ์ˆ˜ ์ž์ฒด๊ฐ€ ๋А๋ฆฌ๋ฉด ํ•ด์‹ฑ์˜ ์žฅ์ ์ด ์‚ฌ๋ผ์ง„๋‹ค
  • ๊ท ๋“ฑ ๋ถ„ํฌ: ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ” ์ „์ฒด์— ๊ณ ๋ฅด๊ฒŒ ๋ถ„์‚ฐ์‹œ์ผœ์•ผ ํ•œ๋‹ค
  • ๊ฒฐ์ •์ : ๊ฐ™์€ ์ž…๋ ฅ์— ๋Œ€ํ•ด ํ•ญ์ƒ ๊ฐ™์€ ์ถœ๋ ฅ์„ ๋‚ด์•ผ ํ•œ๋‹ค
  • ์ถฉ๋Œ ์ตœ์†Œํ™”: ์„œ๋กœ ๋‹ค๋ฅธ ํ‚ค๊ฐ€ ๊ฐ™์€ ์ธ๋ฑ์Šค๋กœ ๋งคํ•‘๋˜๋Š” ๊ฒƒ์„ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•œ๋‹ค

์ผ๋ฐ˜์ ์ธ ํ•ด์‹œํ•จ์ˆ˜ ์˜ˆ์‹œ:

  • Division Method:ย h(k) = k mod m
  • Multiplication Method:ย h(k) = floor(m * (k*A mod 1))
  • Universal Hashing

์ถฉ๋Œ(Collision) ์ฒ˜๋ฆฌ

์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ํ‚ค๊ฐ€ ๊ฐ™์€ ์ธ๋ฑ์Šค๋กœ ๋ณ€ํ™˜๋˜๋Š” ํ˜„์ƒ์„ ์ถฉ๋Œ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ถฉ๋Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

1. ์ฒด์ด๋‹(Chaining)

  • ๊ฐ™์€ ์ธ๋ฑ์Šค์— ๋งคํ•‘๋˜๋Š” ๋ชจ๋“  ์›์†Œ๋ฅผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค
  • ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๊ณ  ํ…Œ์ด๋ธ”์ด ๊ฐ€๋“ ์ฐจ๋„ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์™„๋งŒํ•˜๋‹ค
  • ํ•˜์ง€๋งŒ ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค

2. ๊ฐœ๋ฐฉ ์ฃผ์†Œ๋ฒ•(Open Addressing)

  • ์ถฉ๋Œ ๋ฐœ์ƒ ์‹œ ๋‹ค๋ฅธ ๋นˆ ์Šฌ๋กฏ์„ ์ฐพ์•„ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค
  • ์„ ํ˜• ํƒ์‚ฌ(Linear Probing), ์ด์ฐจ ํƒ์‚ฌ(Quadratic Probing), ์ด์ค‘ ํ•ด์‹ฑ(Double Hashing) ๋“ฑ์ด ์žˆ๋‹ค
  • ๋ฉ”๋ชจ๋ฆฌ๋Š” ํšจ์œจ์ ์ด์ง€๋งŒ ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค

ํ•ด์‹ฑ์˜ ์žฅ๋‹จ์ 

์žฅ์ 

  • ๋น ๋ฅธ ์ ‘๊ทผ: ํ‰๊ท  O(1) ์‹œ๊ฐ„์— ์‚ฝ์ž…, ์‚ญ์ œ, ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค
  • ์œ ์—ฐ์„ฑ: ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
  • ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ: ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•œ๋‹ค (์ฒด์ด๋‹์˜ ๊ฒฝ์šฐ)

๋‹จ์ 

  • ์ตœ์•… ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n) (๋ชจ๋“  ํ‚ค๊ฐ€ ๊ฐ™์€ ์ธ๋ฑ์Šค๋กœ ํ•ด์‹ฑ๋˜๋Š” ๊ฒฝ์šฐ)
  • ์ˆœ์„œ ๋ณด์žฅ ์—†์Œ: ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฝ์ž… ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค
  • ํ•ด์‹œํ•จ์ˆ˜ ์˜์กด์„ฑ: ์ข‹์ง€ ์•Š์€ ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ์ด ๊ธ‰๊ฒฉํžˆ ์ €ํ•˜๋œ๋‹ค
  • ๊ณต๊ฐ„ ์˜ค๋ฒ„ํ—ค๋“œ: ์ถฉ๋Œ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค

ํ•ด์‹ฑ vs ๋‹ค๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ

| ์ž๋ฃŒ๊ตฌ์กฐ | ํ‰๊ท  ๊ฒ€์ƒ‰ | ํ‰๊ท  ์‚ฝ์ž… | ํ‰๊ท  ์‚ญ์ œ | ๊ณต๊ฐ„ ๋ณต์žก๋„ | | -------- | -------- | -------- | -------- | ------ | | ํ•ด์‹œํ…Œ์ด๋ธ” | O(1) | O(1) | O(1) | O(n) | | ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ | O(log n) | O(log n) | O(log n) | O(n) | | ๋ฐฐ์—ด (์ •๋ ฌ๋œ) | O(log n) | O(n) | O(n) | O(n) | | ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ | O(n) | O(1) | O(n) | O(n) |

๊ฒฐ๋ก 

ํ•ด์‹ฑ์€ย ๊ณต๊ฐ„์„ ์กฐ๊ธˆ ๋” ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋Œ€ํญ ์ค„์ด๋Š”ย ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ข‹์€ ํ•ด์‹œํ•จ์ˆ˜์™€ ์ ์ ˆํ•œ ์ถฉ๋Œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•œ๋‹ค๋ฉด, ๋Œ€๋ถ€๋ถ„์˜ ์‹ค์šฉ์ ์ธ ์ƒํ™ฉ์—์„œ ๋งค์šฐ ํšจ์œจ์ ์ธ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

ํŠนํžˆ ๋ฐ์ดํ„ฐ์˜ ๋นˆ๋ฒˆํ•œ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ํ•ด์‹œํ…Œ์ด๋ธ”์ด ์ตœ์ ์˜ ์„ ํƒ์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ด์ง„ ํŠธ๋ฆฌ์™€ ๊ฐ™์€ ๊ฒ€์ƒ‰๊ณผ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ์ ์ ˆํžˆ ๋น ๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ํ›จ์”ฌ ์ด๋“์ด๋‹ˆ๊นŒ ๋ง์ด๋‹ค.

%%

ํ•ด์‹ฑ

CPU๊ฐ€ ์—ฐ์‚ฐ์„ ํ• ๋•Œ ๋ฉ”๋ชจ๋ฆฌ(ํ˜น์€ ๋””์Šคํฌ)์—์„œ ์ž๋ฃŒ๋ฅผ ๊ฐ€์ ธ์™€ ์—ฐ์‚ฐ์„ ํ•œ๋‹ค. x + y๋ฅผ ์—ฐ์‚ฐํ•  ๋•Œ x์™€ y์˜ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค.

์š”์ฆ˜ ์ปดํ“จํ„ฐ๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๋ณ€์ˆ˜์—๊ฒŒ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š”๋ฐ (๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ํšจ์œจ์„ฑ๊ณผ ๋ณด์•ˆ์— ์žฅ์ ์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.), ๊ทธ๋Ÿฌ๋ฉด cpu๊ฐ€ ๊ฐ ๋ณ€์ˆ˜๋“ค์„ ๊ฐ€์ง€๊ณ  ์—ฐ์‚ฐ์„ ํ•  ๋•Œ ๋งˆ๋‹ค ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ TLB(Translation Lookaside Buffer) ๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, TLB์—๋Š” ๊ฐ„๋‹จํžˆ ๋ณ€์ˆ˜์˜ ๊ฐ€์ƒ ์ฃผ์†Œ์™€ ๊ทธ์— ๋งž๋Š” ๋ฌผ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์ ํ˜€์žˆ๋Š” ํ…Œ์ด๋ธ”์ธ๋ฐ, TLB์—์„œ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์žˆ์œผ๋ฉด ๊ตณ์ด ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฐพ์„ ํ•„์š” ์—†์ด ๋ฐ”๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด TLB๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์€ ๋งค์šฐ ๋น ๋ฅธ๋ฐ ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋„ ์ด์™€ ๋น„์Šทํ•˜๊ณ  ๊ธฐ์กด์˜ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๋‹ค. ํ•ด์‹ฑ์€ ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ณต์žก๋„๋Š” O(n) ์ด์ง€๋งŒ **ํ‰๊ท  ๋ณต์žก๋„๋Š” O(1)**์ด๋‹ค.

'ํ•ด์‹ฑ'์ด๋ž€?

์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์—์„œ, ์ฒ˜์Œ์œผ๋กœ ๋ฐ˜๋ณต๋˜๋Š” ๊ธ€์ž๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ณ ์•ˆํ•ด๋ณด์ž.

  1. ์ผ๋‹จ for๋ฌธ ์ค‘์ฒฉ์„ ํ†ตํ•ด ๊ตฌํ˜„ ํ•  ์ˆ˜ ์žˆ์„๊ฒƒ์ด๋‹ค. $O(n^2)$
  2. ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ACII์ฝ”๋“œ ๊ฐœ์ˆ˜ ๋งŒํผ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ , ACSCII๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ ๊ธ€์ž๊ฐ€ ๋“ฑ์žฅํ•  ๋•Œ ๋งˆ๋‹ค ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ 1 ์˜ฌ๋ ค์„œ ์นด์šดํ„ฐ๊ฐ€ 2๊ฐ€ ๋˜๋Š” ๊ธ€์ž๋ฅผ ์ฐพ์œผ๋ฉด ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. $O(n)$

๊ธ€์ž์˜ ๊ฒฝ์šฐ ์–ด์จ‹๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์œ ํ•œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ๋ฆฌ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋งŒ์•ฝ ์ž์—ฐ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ๋˜‘๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด? ์ž์—ฐ์ˆ˜์˜ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ „์ฒด ์ง‘ํ•ฉ U์˜ ํฌ๊ธฐ๊ฐ€ ์‹ค์ œ ์‚ฌ์šฉ๋˜๋Š” ์ง‘ํ•ฉ K์˜ ํฌ๊ธฐ๋ณด๋‹ค ์›”๋“ฑํžˆ ํฐ ๊ฒฝ์šฐ์—๋Š” ํ•ด์‹ฑ์ด ์‚ฌ์šฉ๋œ๋‹ค.

ํ•ด์‹œ ํ…Œ์ด๋ธ”

ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด์žˆ๋Š” ๊ณณ์ด๋‹ค. ํ‚ค(์ธ๋ฑ์Šค) ์™€ ๊ฐ’(๋ฐ์ดํ„ฐ) ์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•„์ฃผ ๋น ๋ฅด๊ฒŒ (ํ‰๊ท  O(1) ๋ณต์žก๋„)๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

ํ•ด์‹œ ํ•จ์ˆ˜

ํ•ด์‹ฑ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ๋กœ, ๋ฐ์ดํ„ฐ๋“ค์„ ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์ธ๋ฑ์Šค๋กœ ์ ์ ˆํžˆ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ํ•จ์ˆ˜๋‹ค. (ํ‚ค๋ฅผ ์ธ๋ฑ์Šค๋กœ ๋ณ€ํ™˜)

์ค‘์š”ํ•œ๊ฒƒ์€ ํ•ด์‹ฑ์˜ ๋ชฉ์  ์ž์ฒด๊ฐ€ ๋ฏธ๋ฆฌ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด๋‘์–ด ๊ณต๊ฐ„์„ ๋งŽ์ด ์ฐจ์ง€ํ•˜๋Š” ๋Œ€์‹ , ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ํ‚ค๋ฅผ ์ธ๋ฑ์Šค๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ๋นจ๋ผ์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ด์ง„ ํŠธ๋ฆฌ์™€ ๊ฐ™์€ ๊ฒ€์ƒ‰๊ณผ ์‚ฝ์ž…,์‚ญ์ œ๊ฐ€ ์ ์ ˆํžˆ ๋น ๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ํ›จ์”ฌ ์ด๋“์ด๋‹ˆ๊นŒ ๋ง์ด๋‹ค.

์ถฉ๋Œ

๊ทธ๋ฆฌ๊ณ  ํšจ์œจ์ ์ธ ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์ถฉ๋Œ์„ ์ตœ์†Œํ™” ํ•ด์•ผํ•œ๋‹ค. ์ถฉ๋Œ์ด๋ž€, ๋‹ค๋ฅธ ๋‘ ํ‚ค๊ฐ€ ๊ฐ™์€ ์ธ๋ฑ์Šค๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ฒƒ์ธ๋ฐ ๋ณดํ†ต์€ ์ด๋Ÿด๋•Œ ์ฒด์ด๋‹ ์ด๋ผ๊ณ  ํ•ด์„œ, ๊ฐ™์€ ์ธ๋ฑ์Šค์— ์ค‘๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์ž˜ ๋งŒ๋“ค์–ด์ง„ ํ•ด์‹œํ•จ์ˆ˜๋Š” ์ถฉ๋Œ์ด ์ ๊ฒŒ ๋ฐœ์ƒํ•˜๊ณ , ๊ทธ๋ž˜์„œ ๊ฐ™์€ ์ธ๋ฑ์Šค์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘์ฒฉ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•ด๋„ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์ง€๋Š” ์•Š๋Š”๋‹ค.

%%