ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

๊ฒ€์ƒ‰ ๋ฌธ์ œ

  • n๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ€์ง„ ๋ฐฐ์—ด S์™€ ํ‚ค x๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, x=S[i]๊ฐ€ ๋˜๋Š” ์ฒจ์ž i๋ฅผ ์ฐพ๋Š” ๊ฒƒ
  • ์—†๋‹ค๋ฉด ์˜ค๋ฅ˜๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ๊ฒฐ๋ก  : ์ด๋ถ„ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์—†๋‹ค.

์ด์ง„ ๊ฒ€์ƒ‰ ์ƒํƒœ ๊ณต๊ฐ„ ํŠธ๋ฆฌ ์ˆœ์ฐจ ๊ฒ€์ƒ‰์€ ๋‹ต์ด์—†๋‹ค.

๋ณด๊ฐ„ ๊ฒ€์ƒ‰

๋ณด๊ฐ„ ๊ฒ€์ƒ‰

  • ๋น„๊ต ์ด์™ธ์— ๋‹ค๋ฅธ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰?
  • 10๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š”๋ฐ, ์ฒซ๋ฒˆ์งธ ์ •์ˆ˜๋Š” 0-9์ค‘ ํ•˜๋‚˜,
  • ๋‘๋ฒˆ์งธ ์ •์ˆ˜๋Š” 10-19์ค‘ ํ•˜๋‚˜, ์ด๋Ÿฐ์‹์œผ๋กœ ๋˜์–ด์žˆ๋‹ค๊ณ  ํ•˜์ž.
  • ์ด๋Ÿด ๊ฒฝ์šฐ ๊ฒ€์ƒ‰ํ‚ค x์™€ S[1+x//10]์—์„œ ๋น„๊ต
  • ์ฆ‰, 25๋Š” S[1+25//10] = S[3]์—์„œ ๋น„๊ต

Linear Interpolation

์„ ํ˜• ๋ณด๊ฐ„

์„ ํ˜• ๋ณด๊ฐ„ ๋ฐฉ๋ฒ•

์„ ํ˜• ๋ณด๊ฐ„์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

  • ์‹œ๊ฐ„ ๋ณต์žก๋„
    • ์ตœ์•…์˜ ๊ฒฝ์šฐ ์ˆœ์ฐจ๊ฒ€์ƒ‰๊ณผ ๊ฐ™์•„์ง

ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ ๋™์  ๊ฒ€์ƒ‰

  • ์ •์  ๊ฒ€์ƒ‰
    • ๋ฐ์ดํ„ฐ๊ฐ€ ํ•œ๊บผ๋ฒˆ์— ์ €์žฅ๋˜์–ด ์ถ”ํ›„์— ์ถ”๊ฐ€๋‚˜ ์‚ญ์ œ๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
  • ๋™์  ๊ฒ€์ƒ‰
    • ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์‹œ๋กœ ์ถ”๊ฐ€, ์‚ญ์ œ๋˜๋Š” ์œ ๋™์ ์ธ ๊ฒฝ์šฐ
    • ๋™์  ๊ฒ€์ƒ‰์˜ ๊ฒฝ์šฐ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์›€. ๊ณ„์†ํ•ด์„œ ์ •๋ ฌ์„ ํ•ด์•ผํ•จ

์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ

์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ

  • ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
    • ์ผ๋‹จ inorder ์ˆœํšŒ (์™ผ์ชฝ ์ž์‹  ์˜ค๋ฅธ์ชฝ)์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ์ถ”์ถœ ๊ฐ€๋Šฅ
  • ํ‰๊ท  ๊ฒ€์ƒ‰ ์‹œ๊ฐ„์„ ์งง๊ฒŒ ์œ ์ง€
    • ๋งŒ์•ฝ ๊ท ํ˜•์žกํžŒ ํŠธ๋ฆฌ๋ผ๋ฉด ์งง๊ฒŒ ์œ ์ง€ ๊ฐ€๋Šฅ
    • ํ•˜์ง€๋งŒ ๊ท ํ˜•์„ ์œ ์ง€ํ•œ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค.
    • ์ตœ์•…์˜ ๊ฒฝ์šฐ linked list์™€ ๊ฐ™์€ ๊ตฌ์กฐ๊ฐ€ ๋œ๋‹ค.
    • Randomํ•˜๊ฒŒ ๋“ค์–ด๊ฐˆ ๊ฒฝ์šฐ ํ‰๊ท ์ ์œผ๋กœ ํšจ์œจ์ ์ธ ๊ฒ€์ƒ‰์‹œ๊ฐ„์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Œ
  • ์‚ฝ์ž…๋  ๋•Œ ๊ท ํ˜• ํŠธ๋ฆฌ๋ผ๋ฉด logn์œผ๋กœ ๊ฐ€๋Šฅ
  • ์‚ญ์ œ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์‚ฌ์ง„์„ ๋ณด์ž.

๋‘๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ

ํ•œ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ

  • ์‚ญ์ œ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
    • ๋‘๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
      • ํ•ด๋‹น ๋…ธ๋“œ๋ณด๋‹ค ์ž‘์€ ๋…ธ๋“œ์ค‘ ๊ฐ€์žฅ ํฐ ๋…ธ๋“œ๋กœ ๋Œ€์ฒด
      • ํ•ด๋‹น ๋…ธ๋“œ๋ณด๋‹ค ํฐ ๋…ธ๋“œ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๋…ธ๋“œ๋กœ ๋Œ€์ฒด
    • ํ•œ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
      • ์ž์‹ ๋…ธ๋“œ๋ฅผ ๋ฐ”๋กœ ์˜ฌ๋ ค๋ฒ„๋ฆผ

์ด์ง„ ๊ฒ€์ƒ‰ํŠธ๋ฆฌ ๊ฒ€์ƒ‰ ๋ถ„์„

  • ๊ฒฐ๊ตญ ์—ฌ์ „ํžˆ ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n)

๊ฒ€์ƒ‰ ์‹œ๊ฐ„ ํ–ฅ์ƒ์„ ์œ„ํ•œ ํŠธ๋ฆฌ ๊ตฌ์กฐ

  • ๊ท ํ˜•์ด ์ค‘์š”ํ•˜๋‹ค.
  • ๊ท ํ˜• ํŠธ๋ฆฌ
    • AVL ํŠธ๋ฆฌ
      • ์ถ”๊ฐ€, ์‚ญ์ œ, ๊ฒ€์ƒ‰ ๋ชจ๋‘ O(logn)
    • B-ํŠธ๋ฆฌ
      • ์žŽ ๋งˆ๋””๋“ค์˜ ๊นŠ์ด๋ฅผ ํ•ญ์ƒ ๊ฐ™๊ฒŒ ์œ ์ง€
      • ์ถ”๊ฐ€, ์‚ญ์ œ, ๊ฒ€์ƒ‰ ๋ชจ๋‘ O(logn)
    • Red-Black Tree
      • ์ถ”๊ฐ€, ์‚ญ์ œ, ๊ฒ€์ƒ‰ ๋ชจ๋‘ O(logn)

AVL ํŠธ๋ฆฌ

  • ์ขŒ์šฐ Subtree์˜ ๋†’์ด ์ฐจ๊ฐ€ ์ตœ๋Œ€ 1์ธ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ AVL ํŠธ๋ฆฌ

๊ท ํ˜• ์œ ์ง€ ๋ฐฉ๋ฒ•

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

B Tree

2-3 tree

  • 2-3 Tree
    • ๊ฐ ๋งˆ๋””์—๋Š” ํ‚ค๊ฐ€ ํ•˜๋‚˜ ๋˜๋Š” ๋‘๊ฐœ๊ฐ€ ์กด์žฌํ•œ๋‹ค. (B, [B, C])
    • ๊ฐ ๋‚ด๋ถ€ ๋งˆ๋””์˜ ์ž์‹ ์ˆ˜๋Š” ํ‚ค์˜ ์ˆ˜ + 1์ด๋‹ค.
      • ์ง€๊ธˆ ๊ฐ™์€ ๊ฒฝ์šฐ ์ฒซ๋ฒˆ์งธ๋Š” ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ
      • ๋‘๋ฒˆ์งธ๋Š” ์™ผ, ์ค‘, ์˜ค
    • ์ฃผ์–ด์ง„ ๋งˆ๋””์˜ ์™ผ์ชฝ ๋ถ€๋ถ„ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ํ‚ค๋Š” ํ•ด๋‹น ๋งˆ๋””์˜ ๊ฐ’๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.
    • ์˜ค๋ฅธ์ชฝ์€ ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.
    • ๋ชจ๋“  ์žŽ๋งˆ๋””๋Š” ์ˆ˜์ค€์ด ๊ฐ™๋‹ค. โ†’ ์–ด๋–ป๊ฒŒ? ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ํ•„์š”

2-3 ํŠธ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€์‹œ ๊ท ํ˜• ์œ ์ง€ ๋ฐฉ๋ฒ•

์ง€๊ธˆ 35๋ฅผ ๋„ฃ์œผ๋‹ˆ ๋งจ ์˜ค๋ฅธ์ชฝ์— ์ž…๋ ฅ๋˜์–ด์„œ ํ•˜๋‚˜์˜ ๋งˆ๋””์— ํ•˜๋‚˜ ํ˜น์€ ๋‘๊ฐœ์˜ ํ‚ค๊ฐ€ ๋“ค์–ด๊ฐ€์•ผ ํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์•˜๋‹ค.

continueโ€ฆ

  1. 25, 30, 35์—์„œ ์ค‘์•™์— ์žˆ๋Š” ๊ฐ’์„ ์œ„๋กœ ์˜ฌ๋ฆฐ๋‹ค.
  2. ๋‹ค์‹œ ์ค‘์•™์— ์žˆ๋Š” ๊ฐ’(20)์„ ์œ„๋กœ ์˜ฌ๋ฆฐ๋‹ค.
  3. ์ด ๋•Œ, 17, 30์€ ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋กœ ๋ถ„๊ธฐํ•œ๋‹ค.
  4. ํ•˜์œ„ ๋…ธ๋“œ์— ์žˆ๋˜ 16, 18, 25, 35๋Š” ์ด ๋ถ„๊ธฐ๋œ ๊ฒƒ์— ๋ถ™๋Š”๋‹ค.
  5. ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ๋„ ์ค‘์•™์— ์žˆ๋Š” 15๋ฅผ ์œ„๋กœ ์˜ฌ๋ฆฐ๋‹ค.
  6. ํ•˜์œ„ ๋…ธ๋“œ๊ฐ€ ๋ถ„๊ธฐ๋œ ๋…ธ๋“œ์— ๋ถ™๋Š”๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ณด๋ฉด, ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ, ํŠธ๋ฆฌ์˜ ์กฐ์ž‘์€ logn๋งŒํผ ์ผ์–ด ๋‚œ๋‹ค.

Hashing

Hash

  • ์–ด๋Š ์ผ์ •ํ•œ ๊ฐœ์ˆ˜์˜ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ๋งŒ์•ฝ key๊ฐ€ ์ฃผ๋ฏผ ๋“ฑ๋ก ๋ฒˆํ˜ธ๋ผ๋ฉด, ๋ชจ๋“  ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋Š” ์—†๋‹ค.
  • ์ฆ‰, ๋ฐฐ์—ด์ด๋‚˜ ํŠธ๋ฆฌ๋‚˜ ์ด๋Ÿฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ ๋˜๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์ด ํ•ด์‹ฑ์ด๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด 100๊ฐœ์˜ ๊ฐ’์„ ์ €์žฅํ•  ๋–„, 0~99๊นŒ์ง€์˜ index๋ฅผ ๊ฐ€์ง€๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๋†“๊ณ ,
  • ํŠน์ • key(์ฃผ๋ฏผ๋ฒˆํ˜ธ)๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ ํ•ด์‹œํ•จ์ˆ˜ (key % 100)๋ฅผ ํ†ต๊ณผํ•œ ๊ฐ’์„ ํ•ด๋‹น ๋ฐฐ์—ด์˜ index๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ

์ž ๊ทธ๋Ÿฐ๋ฐ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ฃผ๋ฏผ ๋ฒˆํ˜ธ๋ฅผ ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ํ†ต๊ณผํ•ด์„œ ๋‚˜์˜จ ์ธ๋ฑ์Šค๊ฐ€ ํ•ญ์ƒ ๋‹ค๋ฅผ๊นŒ? ๋ง๋„ ์•ˆ๋œ๋‹ค. ์‹ค์ œ๋กœ 100๊ฐœ์˜ ํ‚ค๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐฉ์— ๋“ค์–ด๊ฐˆ ํ™•๋ฅ ์„ ๊ณ„์‚ฐํ•ด๋ณด๋ฉด, (๋‹ค๋ฅธ ํ•ด์‰ฌ๊ฐ’์„ ๊ฐ€์งˆ ํ™•๋ฅ )

๊ฑฐ์˜ 0์— ๊ฐ€๊นŒ์šด ๊ฐ’์ด ๋‚˜์˜จ๋‹ค. ๊ฒฐ๊ตญ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ๋‹ค.

์ถฉ๋Œ์„ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•

์ถฉ๋Œ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•

  • open Hashing
    • closed addressing
    • chaining
    • separate chaining
  • closed Hashing(open addressing)
    • linear probing
    • quadratic probing
    • double Hashing

๋‹จ์–ด๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ค์šฐ๋‹ˆ ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ๋งŒ ์•Œ์•„๋‘์ž.

  • open Hashing
    • ํ•ด์‹œ ๊ฐ’์— ๋”ฐ๋ผ์„œ ์ค„์ค„์ด ๋‹ค๋ฐœ๋กœ ์—ฐ๊ฒฐํ•ด๋‘”๊ฒƒ
    • radix sort์—์„œ ํ–ˆ๋˜ ๊ฒƒ ์ฒ˜๋Ÿผ bucket๊ณผ ์œ ์‚ฌํ•œ ๊ฐœ๋…์ž„
    • ๋ฌธ์ œ๋Š” ์•„์‹œ๊ฒ ์ง€๋งŒ ์ค‘๋ณต๋˜์„œ ๋งŽ์„ ๊ฒฝ์šฐ ๋„ˆ๋ฌด ํƒ์ƒ‰์ด ๋Š๋ ค์ง
  • closed Hashing
    • ๋ฐฐ์—ด ๋‚ด์—๋‹ค๊ฐ€ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹
    • ํŠน์ • ํ•ด์‹œ๊ฐ’์œผ๋กœ ์ ‘๊ทผํ–ˆ์„ ๋•Œ ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ€๊ฑฐ๋‚˜ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ’์„ ์ €์žฅ

Open Hashing

์„ฑ๊ณตํ–ˆ์„ ๋•Œ, ํ‰๊ท  ๊ฒ€์ƒ‰ ์‹œ๊ฐ„ ์‹คํŒจ์‹œ, ์„ฑ๊ณต์‹œ ์‹œ๊ฐ„ ๋น„๊ต

  • ์ตœ์•…์˜ ์ƒํ™ฉ
    • ๋ชจ๋“  ํ‚ค๊ฐ€ ๊ฐ™์€ ํ•ด์‰ฌ๊ฐ’์„ ๊ฐ€์ง
    • ๊ฑฐ์˜ ๋ญ 0์ด๊ธด ํ•˜๋‹ค.
    • ํšจ์œจ์ ์ด๊ฒŒ ๋˜๋ ค๋ฉด ๊ท ์ผํ•˜๊ฒŒ ๋ถ„ํฌ๋˜๋Š” ๊ฒƒ์ด ์ตœ์„ 
    • n๊ฐœ์˜ ํ‚ค๊ฐ€ m๊ฐœ์˜ ๋ฐ”๊ตฌ๋‹ˆ์— ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ฒฐ๊ตญ n/m๊ฐœ์˜ ํ‚ค๊ฐ€ ํ‰๊ท ์ ์œผ๋กœ ๋“ค์–ด๊ฐ€ ์žˆ๋Š”๊ฒƒ
    • ์ฆ‰ ๋‚ด๊ฐ€ ์ฒ˜์Œ์— ์ ‘๊ทผํ–ˆ๋Š๋„ซ ๋ชป์ฐพ์•˜์–ด, ๊ทธ๋Ÿผ n/m๊ฐœ๋Š” ์ฐพ์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฑฐ์ง€
    • ๊ทธ๋Ÿผ ๊ฒ€์ƒ‰์— ์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ ๋น„๊ตํšŸ์ˆ˜๋Š” 1๋ฒˆ์— ๋˜์—ˆ์„ ๋•Œ ์‹œ๊ฐ„ + 2๋ฒˆ์งธ์— ๋˜์—ˆ์„ ๋•Œ ์‹œ๊ฐ„ + n/m๋ฒˆ์งธ ๋˜์—ˆ์„ ๋–„ ์‹œ๊ฐ„์˜ ๊ธฐ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

Closed Hashing

hash image Double Hashing

linear, quadratic์€ ์ดํ•ด๊ฐ€ ์‰ฌ์šฐ๋‹ˆ ๋”๋ธ”๋งŒ ๊ฐ€์ ธ์™”๋‹ค.

  • ์šฉ์–ด
    • k = key
    • m = hash table size
  • linear Hashing
    • ๊ฒน์น˜๋ฉด, ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด์„œ ๋นˆ์นธ์— ์ €์žฅ
    • i = 0, 1, 2, 3โ€ฆ
  • quadratic probing
    • ์ œ๊ณฑํ•ด์„œ ์ด๋™ํ•ด๋ฒ„๋ฆผ
  • double Hashing
    • ์ถฉ๋Œํ•  ๊ฒฝ์šฐ h2 ์‚ฌ์šฉ
  • ์ž๋ฃŒ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

linear ์‚ญ์ œ ๊ฒฝ์šฐ ๋ฌธ์ œ์ 

  • a, b๋‘˜๋‹ค ํ•ด์‹œ๊ฐ’์ด 5์ธ ์ƒํ™ฉ
  • ๋‘˜๋‹ค ๋„ฃ์—ˆ์ง€, ์ž˜๋์–ด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ€๋ ธ์œผ๋‹ˆ๊นŒ
  • ๊ทผ๋ฐ a ์‚ญ์ œํ•จ
  • b ๊ฒ€์ƒ‰ํ• ๋ž˜
  • ??

์„ ํƒ ๋ฌธ์ œ

  • ํ‚ค๊ฐ€ n๊ฐœ์ธ ๋ฆฌ์ŠคํŠธ์—์„œ k๋ฒˆ์งธ๋กœ ํฐ(์ž‘์€) ํ‚ค๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ
  • ํ‚ค๋Š” ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.

์ตœ๋Œ€ํ‚ค ์ฐพ๊ธฐ

  • ์ตœ๋Œ€(์ตœ์†Œ)ํ‚ค ์ฐพ๊ธฐ : ๊ฒฐ๋ก ์ ์œผ๋กœ n-1๋ฒˆ์˜ ๋น„๊ต๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ทธ๋Ÿผ ํ•œ๋ฒˆ์— ์ตœ๋Œ€ํ‚ค, ์ตœ์†Œํ‚ค๋ฅผ ์ฐพ๋Š”๋‹ค๋ฉด?

์ตœ์†Œํ‚ค์™€ ์ตœ๋Œ€ํ‚ค ์ฐพ๊ธฐ

์ตœ์†Œํ‚ค์™€ ์ตœ๋Œ€ํ‚ค ๋™์‹œ์— ์ฐพ๊ธฐ

  • ํ•œ๋ฒˆ์˜ ๋ฃจํ”„์—์„œ ์ตœ๋Œ€, ์ตœ์†Œ ๋น„๊ต๋ฅผ 2๋ฒˆ์”ฉ n-1๋ฒˆ ํ•ด์•ผํ•œ๋‹ค.
  • W(n) = 2(n-1)

๊ทธ๋Ÿฐ๋ฐ ์ด๋ณด๋‹ค ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•œ๋‹ค.

ํ‚ค๋ฅผ ์ง์ง€์›Œ์„œ ์ฐพ๊ธฐ

ํ‚ค๋ฅผ ์ง์ง€์šฐ๊ธฐ

  1. ์ง์„ ์ง€์–ด์„œ ๋‘˜๋งŒ ๋น„๊ตํ•˜์—ฌ ํฐ๋†ˆ, ์ž‘์€๋†ˆ์„ ๋‚˜๋ˆˆ๋‹ค.
  2. ๋‘ ๊ทธ๋ฃน์„ ๋งŒ๋“ค์–ด์„œ ๊ฐ๊ฐ์˜ ๊ทธ๋ฃน์—์„œ ํฐ๋†ˆ ๊ทธ๋ฃน์€ ์ตœ๋Œ“๊ฐ’
  3. ์ž‘์€ ๊ทธ๋ฃน์€ ์ž‘์€ ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.

๋™์ž‘ํ•˜๋Š” ์ด์œ ๋Š”, ๊ฒฐ๊ตญ ์ฒ˜์Œ์— ์Œ์„ ์ง€์–ด์„œ ๊ทธ๋ฃน์„ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ์ตœ๋Œ“๊ฐ’์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ํ›„๋ณด ์ง‘๋‹จ, ์ตœ์†Œ๊ฐ’์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ํ›„๋ณด์ง‘๋‹จ์„ ๋‚˜๋ˆ„๋Š”๋ฐ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ๊ฐ๊ฐ์˜ ๊ทธ๋ฃน์—์„œ ๋ฌด์กฐ๊ฑด ์ตœ๋Œ€, ์ตœ์†Œ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋ญ.. ์•ฝ๊ฐ„ ๋‚˜์•„์กŒ๋‹ค.

์ฐจ๋Œ€ํ‚ค (second largest key) ์ฐพ๊ธฐ

ํ† ๋„ˆ๋จผํŠธ ๋ฐฉ๋ฒ•

  • ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•
    • ์ตœ๋Œ€ํ‚ค๋ฅผ ์ฐพ์Œ (n-1๋ฒˆ ๋น„๊ต)
    • ๊ทธ ๋‹ค์Œ ์ตœ๋Œ€ํ‚ค๋ฅผ ์ฐพ์Œ(n-2)
  • Tournament Method
    • ํ† ๋„ˆ๋จผํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ ์ตœ๋Œ€ ์šฐ์Šน์ž๊ฐ€ ์ตœ๋Œ€ํ‚ค
    • ๊ทธ๋Ÿผ ์šฐ์Šน์žํ•œํ…Œ ์ง„๋…€์„๋“ค ์ค‘์— ์ฐจ๋Œ€ํ‚ค๊ฐ€ ์žˆ๊ฒ ์ง€.
      • ์ž˜ ์ƒ๊ฐํ•ด๋ด. ๋‚ด๊ฐ€ ์ตœ๊ฐ•์ž์•ผ
      • ๊ฒฐ์Šน์—์„œ ์ด๊ฒผ์–ด, ๊ทธ๋Ÿผ 2๋“ฑ๋”ฐ๋ฆฌ๊ฐ€ ๊ฒช๊ณ ์˜จ ์• ๋“ค์€ ์ด๋ฏธ ๋‚˜๋ณด๋‹ค ์‹ค๋ ฅ์ด ์ข‹์„ ์ˆ˜ ์—†์–ด
      • ๊ทธ๋Ÿผ ๋‚ด๊ฐ€ ์ด๊ธฐ๊ณ  ์˜จ ๋…€์„๋“ค ์ค‘์— 2๋“ฑ๋”ฐ๋ฆฌ๋ณด๋‹ค ์‹ค๋ ฅ์ด ์ข‹์„์ˆ˜๋Š” ์žˆ์ง€. ๊ทธ์น˜.
      • ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์šฐ์Šน์ž๊ฐ€ ์ œ๋ผ๊ณ  ์˜จ๋†ˆ๋“ค๋งŒ ์กฐ์‚ฌํ•˜๋ฉด 2๋ฒˆ์งธ ์‹ค๋ ฅ์ž๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฑฐ์ง€.

์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ

  • n = 8ํŒ€
  • ์ฒซ๋ฒˆ์งธ 4๋ฒˆ, ๋‘๋ฒˆ์žฌ 2๋ฒˆ ๋งˆ์ง€๋ง‰ 1๋ฒˆ
  • ์ด ์‹œํ•ฉ ํšŸ์ˆ˜ =
  • ๊ฒฐ๊ตญ ์ตœ๋Œ€ํ‚ค ์ฐพ๋Š”๋ฐ ์žˆ์–ด์„œ๋Š” ๋™์ผํ•œ ์‹œ๊ฐ„์ด ์†Œ์š”๋จ
  • ์ฐจ๋Œ€ํ‚ค๋ฅผ ์ฐพ์„ ๋–„๋Š”, ์šฐ์Šน์ž ๊ธฐ๋ฐ˜์œผ๋กœ ์ง„๋†ˆ๋งŒ ์ฑ™๊ธฐ๋ฉด ๋˜๋Š”๋ฐ ๊ทธ๋•Œ ๊นŠ์ด๊ฐ€ logn
  • ๊ทธ๋Ÿผ ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์—์„œ ๋น„๊ตํšŸ์ˆ˜๋Š” logn-1
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ n_logn-2

k๋ฒˆ์งธ ์ž‘์€ ํ‚ค ์ฐพ๊ธฐ

  • ์ •๋ ฌ ํ›„ k๋ฒˆ์žฌ ์„ ํƒ nlogn
  • Quick sort์˜ partition ๋ฐฉ๋ฒ•
  • O(n) ๋ฐฉ๋ฒ• : ?

Partition ๋ฐฉ๋ฒ•

Partition

  • ํ€ต์†ŒํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋–„ ๋‘๊ฐ€์ง€ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค.
    • Partition
    • Merge
  • ์ด ๋•Œ partition์€, ํŠน์ • ํ”ผ๋ด‡๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ์™ผ์ชฝ์—, ํฐ๊ฐ’์„ ์˜ค๋ฅธ์ชฝ์— ๋‘๋Š” ๋ฐฉ์‹์ด๋‹ค.
    • ์ตœ์•…์˜ ๊ฒฝ์šฐ(๋ชจ๋‘ ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์ด๋˜์–ด ์žˆ๋‹ค๋ฉด) O(n^2)
  • ๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฌ๋ฉด ์ข‹์€ ์ ์ด ๋ญ๋ƒ๋ฉด, ํ•ด๋‹น ํ”ผ๋ด‡์ด ๋ช‡๋ฒˆ์งธ๋กœ ํฐ์ง€ ํ•œ๋ฒˆ์˜ ํ•จ์ˆ˜๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋™์•ˆ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • ๋งŒ์•ฝ ํ˜„์žฌ ์œ„์น˜๊ฐ€ k๋ณด๋‹ค ์ž‘๋‹ค๋ฉด, ์˜ค๋ฅธ์ชฝ์„ ํƒ์ƒ‰ํ•ด์„œ ์•Œ์•„๋‚ด๋ฉด ๋˜๊ณ ,
  • ํฌ๋‹ค๋ฉด ์™ผ์ชฝ์„ ํƒ์ƒ‰ํ•˜๋ฉด ๋œ๋‹ค.

์ˆ˜๋„ ์ฝ”๋“œ

  • ์‹œ๊ฐ„ ๋ณต์žก๋„
    • ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n^2)
    • ์ตœ๊ณ ์˜ ๊ฒฝ์šฐ (ํ•ด๋‹น ํ”ผ๋ด‡์ด ๊ณ„์†ํ•ด์„œ ์ค‘๊ฐ„์— ์œ„์น˜ํ•  ๊ฒฝ์šฐ)
      • ๊ทธ๋Ÿฌ๋ฉด ๊ณ„์†ํ•ด์„œ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„๊ฒŒ ๋˜๊ณ , ๋งŒ์•ฝ 8๊ฐœ๋ผ๋ฉด ์ฒ˜์Œ์— 8๊ฐœ ๋น„๊ต
      • ๊ทธ๋‹ค์Œ์— 4๊ฐœ๋น„๊ต
      • ๊ทธ๋‹ค์Œ์— 2๊ฐœ ๋น„๊ต
      • ๋งˆ์ง€๋ง‰์— 1๊ฐœ ๋น„๊ต
    • ํ‰๊ท ์ ์œผ๋กœ 3n

์„ ํ˜• ์‹œ๊ฐ„ ๋ฐฉ๋ฒ•

  1. ๋ฐ์ดํ„ฐ๋ฅผ 5๊ฐœ์˜ ๋ฌถ์Œ์œผ๋กœ ๋งŒ๋“ ๋‹ค.
  2. ๊ฐ๊ฐ์˜ ๋ฌถ์Œ์—์„œ ์ •๋ ฌํ•œ๋‹ค.
  3. ๊ฐ€์šด๋ฐ ๊ฐ’์„ ๋ชจ์•„์„œ M ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค. (์ค‘์•™์— ์œ„์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ํ›„๋ณด)
  4. M ๋ฐฐ์—ด์—์„œ ๊ฐ€์šด๋ฐ๋ฅผ ์ฐพ๋Š”๋‹ค. (๊ทธ๋ƒฅ ๊ฐ€์šด๋ฐ ์œ„์น˜๋งŒ ์ฐพ๊ธฐ ์œ„ํ•จ)
  5. ๊ทธ๋Ÿผ ์ „์ฒด ๋ฐ์ดํ„ฐ์—์„œ ๊ฐ€์šด๋ฐ์˜ ์œ„์น˜๋งŒ ์•Œ์•„๋ƒˆ๋‹ค. ์ „์ฒด๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜์ง€ ์•Š๊ณ .
    • ์—ฌ๊ธฐ์„œ, ๊ทธ ๊ฐ€์šด๋ฐ ๊ฐ’ m์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์€์ชฝ, ํฐ์ชฝ์ด ์œ„์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  6. ๋งŒ์•ฝ์— ๋‚ด๊ฐ€ ์ฐพ๊ณ ์žํ•˜๋Š” ๋ฒˆ์งธ k๊ฐ€ S1๋ณด๋‹ค ์ž‘์œผ๋ฉด, ๊ทธ ์ง‘๋‹จ์œผ๋กœ ๊ฐ€์„œ ์ฐพ์ž
  7. S1, S2 ๋”ํ•ด์„œ k๋ณด๋‹ค ํฌ๋ฉด ์ค‘์•™์— ๋‹ต์ด ์žˆ๋‹ค๋Š” ์†Œ๋ฆฌ๋‹ˆ๊นŒ ๋ฆฌํ„ด
  8. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด S3์— ์žˆ๋‹ค๋Š” ์†Œ๋ฆฌ๋‹ˆ๊นŒ ๊ทธ๊ณณ์„ ํƒ์ƒ‰
    • ์ด ๋•Œ k-s1-s2์ธ ์ด์œ ๋Š” s3์—์„œ k-s1-s2๋ฒˆ์งธ์˜ ์œ„์น˜๊ฐ€ ๋‹ต์ด๊ธฐ ๋•Œ๋ฌธ

์˜์‚ฌ ์ฝ”๋“œ

  1. 5๋กœ ๋‚˜๋‰œ ๋ญ‰์น˜๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ : n/5 * 5log5 = nlog5 = O(n)
  2. M์— ๋Œ€ํ•ด์„œ M/2๋ฒˆ์จฐ ์œ„์น˜ ๊ตฌํ•˜๊ธฐ : T(n/5)
    • 1/5๋กœ ๋ฐฐ์—ดํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ฆ
    • ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ณต์žก๋„๊ฐ€ n์ธ ๊ฒƒ์„ ์•Œ๊ณ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ ์„ ์ˆ˜ ์žˆ์Œ
  3. m์— ๋Œ€ํ•ด์„œ ๊ตฌํ–ˆ๋‹ค๋ฉด, ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ S1, S2, S3๋ฅผ ๋‚˜๋ˆ ์•ผํ•จ
    • S ๋ฐฐ์—ด์ด ์ •๋ ฌ์ด ๋˜์–ด์žˆ์ง€ ์•Š์€ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์”ฉ ๋น„๊ตํ•ด์•ผ ํ•จ
    • O(n)
  4. k์˜ ์œ„์น˜๋ฅผ ํŒ๋‹จํ•˜๊ณ  ๋‹ค์‹œ ํ˜ธ์ถœํ•จ : T(3n/4) - ??

T(3n/4)?

์ด ๋ถ€๋ถ„์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฒฐ๊ตญ S1, S3๊ฐ€ ํฌ๊ธฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋‚˜์˜ค๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ๊ณ„์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋งจ ์•„๋ž˜์˜ ๊ทธ๋ฆผ์„ ํ™•์žฅํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ํ•œ๋ฒˆ์˜ ์ค‘์•™ ์œ„์น˜๋ฅผ ์•Œ์•„๋‚ธ ์ดํ›„์— ์ƒํ™ฉ์„ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์œ„์™€ ๊ฐ™๋‹ค. ๋งŒ์•ฝ์— ์—ฌ๊ธฐ์„œ, m๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์˜์—ญ์€ ์–ผ๋งˆ๋‚˜๋˜๋‹ˆ? ๋ผ๊ณ  ๋ฌผ์–ด๋ณธ๋‹ค๋ฉด ๋Œ€๊ฐ• 3/4์ •๋„์˜ ์˜์—ญ์ด ํ™•์‹คํ•˜๊ฒŒ ์ž‘์„ ์ˆ˜ ์žˆ๋Š” ์ง€์ ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ ์Šคํ…์œผ๋กœ ๋„˜์–ด๊ฐ์— ์žˆ์–ด์„œ S1, S3๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ 3n/4 ์ •๋„์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ• ๋‹น๋  ์ˆ˜ ์žˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ƒ์ˆ˜ ํƒ€์ž„์— ๊ฐ€๋Šฅํ•˜๋‹ค.. ใ„ทใ„ท

Partition๊ณผ median ๋ฐฉ๋ฒ• ๋น„๊ต

Partition, median ๋ฐฉ๋ฒ• ๋น„๊ต

  • ๊ฒฐ๊ตญ ๋น„๊ต๋ฅผ ํ•ด๋ณด๋ฉด, ๋‹จ์ˆœ Partition๋ฐฉ๋ฒ•์€ ๋ชจ๋“  ๊ฐ’์„ ๋น„๊ตํ•˜๋ฉด์„œ pivot์„ ์ฐพ์•˜๋‹ค๋Š” ๊ฒƒ
  • ๊ทธ๋ฆฌ๊ณ  median์˜ median ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ๊ฒ€์ƒ‰ํ•˜๋Š” ์˜์—ญ์„ ์ค„์˜€๋‹ค๋Š” ์ ์—์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

๋ฌธ์ž์—ด ๋งค์นญ

๋ฌธ์ž์—ด ๋งค์นญ ๋ฌธ์ œ

๋ฌธ์ž์—ด์—์„œ ํŒจํ„ด์„ ์ฐพ๋Š” ๋ฌธ์ œ.

  • ์›์‹œ์ ์ธ ๋ฐฉ๋ฒ•
  • ์˜คํ† ๋งˆํƒ€
  • Rabin-Karp ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • Noyer-moore ์•Œ๊ณ ๋ฆฌ์ฆ˜

์›์‹œ์ ์ธ ๋ฐฉ๋ฒ•

์›์‹œ์ ์ธ ๋ฐฉ๋ฒ•

์›์‹œ์ ์ธ ๋ฐฉ๋ฒ•์€ ๊ทธ๋ƒฅ n-m+1๋ฒˆ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ. ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์— ๋Œ€ํ•ด m๋ฒˆ ๋น„๊ต : O(mn)

์˜คํ† ๋งˆํƒ€

์˜คํ† ๋งˆํƒ€ ์‚ฌ์šฉ

  • ํ  ์ „ํ˜€ ๋ชจ๋ฅด๊ฒ ๋‹ค.
  • ์ปดํŒŒ์ผ๋Ÿฌ ์ฑ…์„ ์ฐธ๊ณ ํ•˜๋ผ๊ณ  ํ•œ๋‹ค. ์™€์šฐ..

Rabin-Karp

  • ํ•ต์‹ฌ์€ ์ˆซ์ž๋กœ ๋ณ€๊ฒฝํ•ด์„œ ๋น„๊ตํ•˜๋Š” ๊ฒƒ.

  • ์—ฌ๊ธฐ์„œ ๋ˆˆ์น˜์ฑ˜๊ฒ ์ง€๋งŒ, ๊ณ„์‚ฐ ํ…Œํฌ๋‹‰์„ ์ด์šฉํ•ด์„œ ๋น„๊ต๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ m์˜ ๊ฐ’์ด ํฌ๋ฉด ๊ฐ’์ด ๋„ˆ๋ฌด ์ปค์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค.

  • ์ ๋‹นํ•œ q๋ฅผ ๋„์ž…ํ•ด์„œ ๋ชจ๋“ˆ๋Ÿฌ ์—ฐ์‚ฐ์„ ๋„์ž…ํ•ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.
  • ๋ฌธ์ œ๋Š” ๋ชจ๋“ˆ๋Ÿฌ ๊ฐ’์ด ๊ฐ™๋‹ค๊ณ ํ•ด์„œ ์ง„์งœ ๋งค์นญ์ด๋˜๋Š”์ง€ ํ™•์ธํ•  ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—
  • ๊ฐ™์„ ๊ฒฝ์šฐ ํ•œ๋ฒˆ ๋น„๊ตํ•ด์ฃผ๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.
  • ๊ฒฐ๊ตญ O(n) ์•Œ๊ณ ๋ฆฌ์ฆ˜

Boyer Moore ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ํ•ต์‹ฌ์ด ๋ญ์•ผ?
  • ๋งจ์ฒ˜์Œ๋ถ€ํ„ฐ ๋น„๊ตํ•˜์ง€ ๋ง๊ณ  ๋งจ ๋์„ ๋น„๊ตํ•œ๋‹ค์Œ์—
  • ๋‹ฌ๋ผ? ๊ทธ๋Ÿฌ๋ฉด A ๋ฐฐ์—ด์—์„œ ๋น„๊ตํ•œ ๋…€์„์„ B์—์„œ ์ฐพ์•„๋ด
  • ์—†์–ด? ์—†์œผ๋ฉด ๊ทธ๋ƒฅ ๋‹ค ๊ฑด๋„ˆ๋›ฐ์–ด๋ฒ„๋ฆฌ๋Š”๊ฒจ

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

  • ๊ฒฐ๊ตญ jump๋ฅผ ๊ตฌํ•˜๋Š”๊ฒŒ ํ•ต์‹ฌ์ด๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ์— ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ 2๊ฐœ๋ผ๋ฉด?
  • ์ž‘์€ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.