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

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


List

๋ฆฌ์ŠคํŠธ(list)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ง์„ ์œผ๋กœ ๋‚˜์—ดํ•œ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€๋‚˜ ์‚ญ์ œ๋Š” ์‰ฝ์ง€๋งŒ, ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฐ๋‹ค.

๋ฆฌ์ŠคํŠธ์˜ ๊ฐœ๋…๋„์ด๋‹ค. ๋„ค ๊ฐœ์˜ ๋ฌธ์ž์—ด โ€˜Blueโ€™, โ€˜Greenโ€™, โ€˜Yellowโ€™, โ€˜Redโ€™ ๊ฐ€ ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๊ฐ ๋ฐ์ดํ„ฐ์—๋Š” ํฌ์ธํ„ฐ(pointer)๊ฐ€ ์žˆ์–ด ๋‹ค์Œ ๋ฐ์ดํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ๋ฆฌ์ŠคํŠธ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์ƒ์˜ ์—ฐ์†๋œ ์œ„์น˜์— ์ €์žฅ๋˜์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ๋–จ์–ด์ง„ ์˜์—ญ์— ํฉ์–ด์ ธ์„œ ์ €์žฅ๋œ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋ ค๋ฉด ํฌ์ธํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋”ฐ๋ผ๊ฐ€์•ผ๋งŒ ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€๋Š” ์ถ”๊ฐ€ํ•  ์œ„์น˜์˜ ์•ž๋’ค ํฌ์ธํ„ฐ๋ฅผ ๋ณ€๊ฒฝ๋งŒ ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ๊ฐ„๋‹จํ•˜๋‹ค. (์‚ญ์ œ๋„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํฌ์ธํ„ฐ์˜ ๋ฐฉํ–ฅ์„ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค)
์กฐํšŒ์ถ”๊ฐ€์‚ญ์ œ
O(n)O(1)O(1)

Array

๋ฐฐ์—ด(array) ์€ ๋ฐ์ดํ„ฐ๋ฅผ 1์—ด๋กœ ๋‚˜์—ดํ•œ ๊ฒƒ์ด๋‹ค. ๋ฆฌ์ŠคํŠธ์™€๋Š” ๋Œ€์กฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ๋Š” ์‰ฝ์ง€๋งŒ ์ถ”๊ฐ€๋‚˜ ์‚ญ์ œ์— ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.

์กฐํšŒ์ถ”๊ฐ€์‚ญ์ œ
O(1)O(n)O(n)

Stack

์Šคํƒ(Stack)์€ ๋ฐ์ดํ„ฐ๋ฅผ 1์—ด๋กœ ๋‚˜์—ดํ•˜์ง€๋งŒ, ์„œ๋ฅ˜๋ฅผ ์Œ“์•„ ๋†“์€ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•œ ๋ฐ์ดํ„ฐ์—๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ๋กœ์šด ์„œ๋ฅ˜๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ํ˜„์žฌ ์„œ๋ฅ˜ ๋”๋ฏธ์˜ ๊ฐ€์žฅ ์œ„์— ์˜ฌ๋ ค๋‘๊ณ  ์„œ๋ฅ˜๋ฅผ ๊บผ๋‚ผ ๋•Œ๋Š” ๊ฐ€์žฅ ์œ„์—์„œ๋ถ€ํ„ฐ ๊บผ๋‚ด๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

  • ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ : push
  • ๋ฐ์ดํ„ฐ ์ถ”์ถœ : pop

์Šคํƒ์ฒ˜๋Ÿผ ๋‚˜์ค‘์— ๋„ฃ์€ ๊ฒƒ์„ ๋จผ์ € ๊บผ๋‚ด๋Š” ํ›„์ž…์„ ์ถœ ๊ตฌ์กฐ๋ฅผ LIFO ๋ผ๊ณ  ํ•œ๋‹ค. ๋ฆฌ์ŠคํŠธ๋‚˜ ๋ฐฐ์—ด๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์Šคํƒ๋„ ๋ฐ์ดํ„ฐ๋ฅผ 1์—ด๋กœ ๋‚˜์—ดํ•œ ๊ฒƒ์ด์ง€๋งŒ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€๋‚˜ ์‚ญ์ œ๊ฐ€ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ œ์•ฝ์ด ์žˆ๋‹ค. ๋งŒ์•ฝ ์ค‘๊ฐ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ์ผ ์œ„์— ์˜ฌ ๋•Œ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ pop ํ•ด์•ผ ํ•œ๋‹ค.

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

Queue

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

  • ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ : enqueue
  • ๋ฐ์ดํ„ฐ ์ถ”์ถœ : dequeue

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

Hash Table

ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table)์€ โ€˜ํ•ด์‹œ ํ•จ์ˆ˜โ€™์™€ ํ•จ๊ป˜ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์„ ํšจ์œจ์ ์œผ๋กœ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ํ‚ค(key)์™€ ๊ฐ’(value)์ด ํ•œ ์Œ์„ ์ด๋ฃจ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋งŒ์•ฝ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค๋ฉด ์„ ํ˜• ํƒ์ƒ‰์ด ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ ๋ฐ์ดํ„ฐ์–‘์— ๋น„๋ก€ํ•ด์„œ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ํ•ด์‹œ ํ…Œ์ด๋ธ”์ด๋‹ค.

  1. โ€˜ํ•ด์‹œ ํ•จ์ˆ˜โ€™ ๋ฅผ ์ด์šฉํ•ด์„œ Joe์˜ ํ‚ค(์ฆ‰ ๋ฌธ์ž์—ด โ€˜Joeโ€™)์— ํ•ด๋‹นํ•˜๋Š” ํ•ด์‹œ๊ฐ’์„ ๊ณ„์‚ฐํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” 4928 ์ด๋ผ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.
  2. ๊ตฌํ•œ ํ•ด์‹œ๊ฐ’์„ ๋ฐฐ์—ด์˜ ์ƒ์ž ๊ฐฏ์ˆ˜์ธ 5๋กœ ๋‚˜๋ˆ„์–ด mod ์—ฐ์‚ฐํ•œ๋‹ค. (5๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋Š” 3์ด๋‹ค)
  3. ๊ตฌํ•œ ์ˆ˜์™€ ๊ฐ™์€ ๋ฐฐ์—ด์˜ 3๋ฒˆ ์ƒ์ž์— Joe ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.
  4. ๋งŒ์•ฝ Joe ๋ฅผ ํ‚ค๋กœ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด key ์˜ ํ•ด์‹œ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋ฉด ๋ฐ”๋กœ ๊ทธ ์œ„์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
  5. ๊ทธ๋Ÿฐ๋ฐ ์ถ”๊ฐ€๋กœ ๊ฐ™์€ ํ•ด์‹œ๊ฐ’์„ ๊ฐ–๋Š” key ๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค๋ฉด(์ด๋ฅผ โ€˜์ถฉ๋Œโ€™์ด๋ผ๊ณ  ํ•œ๋‹ค.), ๋ฐฐ์—ด์˜ 3๋ฒˆ ์ƒ์ž์—์„œ ๋ฆฌ์ŠคํŠธ ๊ตฌ์กฐ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ์ €์žฅํ•œ๋‹ค.
  6. ๋งŒ์•ฝ 3๋ฒˆ ์ƒ์ž์— ์ €์žฅ๋œ Ally ๋ผ๋Š” key ๋ฅผ ์ฐพ๋Š”๋‹ค๋ฉด, ์ œ์ผ ์ฒ˜์Œ ์ €์žฅ๋œ Joe ๋ฅผ ์„ ๋‘๋กœ ํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์„ ํ˜• ํƒ์ƒ‰์„ ์‹ค์‹œํ•œ๋‹ค.

์ด์ฒ˜๋Ÿผ ํ•ด์‹œ ํ…Œ์ด๋ธ”์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด ์ถฉ๋Œ์ด ๋งŽ์•„์ง€๊ณ  ์„ ํ˜• ํƒ์ƒ‰์˜ ๋นˆ๋„๊ฐ€ ๋†’์•„์ง„๋‹ค. ๋ฐ˜๋Œ€๋กœ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํฌ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ์ƒ์ž๊ฐ€ ๋งŽ์•„์ ธ์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ ์ ˆํžˆ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

Heap

ํž™(Heap) ์€ ๊ทธ๋ž˜ํ”„์˜ ํŠธ๋ฆฌ ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜๋กœ, โ€˜์šฐ์„ ์ˆœ์œ„ ํโ€™๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ํ•˜๋‚˜๋กœ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ๋•Œ๋Š” ์ตœ์†Ÿ๊ฐ’๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์„ ํƒํ•œ๋‹ค. ์ถ”๊ฐ€๋Š” ์ž์œ ๋กญ๊ฒŒ ํ•˜๊ณ  ์ถ”์ถœํ•  ๋•Œ๋Š” ์ž‘์€ ๊ฐ’๋ถ€ํ„ฐ ๊บผ๋‚ด๋Š” ๊ฒƒ์ด ์šฐ์„ ์ˆœ์œ„ ํ์ด๋‹ค.

ํž™์„ ํ‘œํ˜„ํ•˜๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ๋Š” ๊ฐ ์ •์ ์„ โ€˜๋…ธ๋“œ(node)โ€™๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ฐ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค. ๋…ธ๋“œ๋“ค์€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค. ๋…ธ๋“œ๋Š” ์œ„์—์„œ๋ถ€ํ„ฐ ์ฑ„์›Œ์ง€๋ฉฐ, ๊ฐ™์€ ์ธต์—์„œ๋Š” ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฑ„์›Œ์ง„๋‹ค. ๋˜ํ•œ ํž™์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ ์œ„์น˜๋ฅผ ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ž์‹ ๋…ธ๋“œ์˜ ์ˆซ์ž๋Š” ๋ฐ˜๋“œ์‹œ ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ์ˆซ์ž๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค๋Š” ๊ทœ์น™์ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ์œ„(root)์— ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. ์ด ๊ทœ์น™์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ์•„๋ž˜์ธต์— ์žˆ๋Š” ์™ผ์ชฝ ๋…ธ๋“œ๋ถ€ํ„ฐ ๊ฐ’์„ ์ฑ„์šฐ๊ณ , ๊ฐ€์žฅ ์•„๋ž˜ ์ธต์ด ๋ชจ๋‘ ์ฑ„์›Œ์ง€๋ฉด ์ƒˆ๋กœ์šด ์ธต์„ ๋งŒ๋“ค์–ด์„œ ๋˜ ๊ฐ€์žฅ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฑ„์›Œ๋‚˜๊ฐ„๋‹ค.

  1. ํž™์— ์ˆซ์ž 5๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ณด์ž.
  2. ์ถ”๊ฐ€๋˜๋Š” ์ˆ˜๋Š” ๊ฐ€์žฅ ์•„๋ž˜ ์ธต์˜ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ €์žฅ๋œ๋‹ค. ๊ทธ๋ฆผ์˜ ๊ฒฝ์šฐ ์•„๋ž˜์ธต์— ํ•œ ์ž๋ฆฌ๊ฐ€ ๋‚จ์•„์žˆ์œผ๋ฏ€๋กœ ๊ฑฐ๊ธฐ์— ์ €์žฅ๋œ๋‹ค.
  3. ๋ถ€๋ชจ์˜ ์ˆซ์ž๊ฐ€ ํด ๋•Œ๋Š” ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ถ€๋ชจ์™€ ์ž์‹์„ ๊ตํ™˜ํ•œ๋‹ค. (6๊ณผ 5๋ฅผ ๊ตํ™˜)
  4. ๊ทธ ๋‹ค์Œ์œผ๋กœ๋Š” ๋ถ€๋ชจ 1 < ์ž์‹ 5 ์ด๋ฏ€๋กœ ๋ถ€๋ชจ์˜ ์ˆซ์ž๊ฐ€ ์ž‘์•„์„œ ๊ตํ™˜์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๊ฒƒ์œผ๋กœ ํž™์— ์ˆซ์ž ์ถ”๊ฐ€๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค.
  5. ํž™์—์„œ ์ˆซ์ž๋ฅผ ๊บผ๋‚ผ ๋•Œ๋Š” ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ˆซ์ž๊ฐ€ ์ถ”์ถœ๋œ๋‹ค. root์˜ ์ˆซ์ž๊ฐ€ ์ตœ์†Ÿ๊ฐ’์„ ์ง€๋‹ˆ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  6. ๊ฐ€์žฅ ์œ„์˜ ์ˆซ์ž๊ฐ€ ์—†์–ด์กŒ์œผ๋ฏ€๋กœ ํž™์˜ ๊ตฌ์กฐ๋ฅผ ๋‹ค์‹œ ์ •๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
  7. ์ด๋Ÿด ๋•Œ๋Š” ๊ฐ€์žฅ ํ›„๋ฏธ์— ์žˆ๋Š” 6์ด ๊ฐ€์žฅ ์œ„๋กœ ์ด๋™ํ•œ๋‹ค.
  8. ๋ถ€๋ชจ 6 > ์ž์‹(์šฐ) 5 > ์ž์‹(์ขŒ) 3 ์ด๋ฏ€๋กœ ๊ฐ€์žฅ ๋‚ฎ์€ ์™ผ์ชฝ ์ž์‹๊ณผ ๋ถ€๋ชจ๋ฅผ ๊ตํ™˜ํ•œ๋‹ค.
  9. ์ด๊ฒƒ์„ ๊ตํ™˜์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

ํž™์€ ํ•ญ์ƒ root์— ์ตœ์†Ÿ๊ฐ’์ด ์žˆ์œผ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์— ์ƒ๊ด€์—†์ด O(1) ์‹œ๊ฐ„์— ์ตœ์†Ÿ๊ฐ’์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์ถ”์ถœ ํ›„ ํž™์„ ์žฌ๊ตฌ์ถ•ํ•  ๋•Œ์—๋Š” ๊ฐ€์žฅ ํ›„๋ฏธ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ root๋กœ ๊ฐ€์ ธ์˜จ ํ›„ ์ž์‹๊ณผ ๋น„๊ตํ•ด ๊ฐ€๋ฉฐ ์•„๋ž˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค. ๋•Œ๋ฌธ์— ๊ณ„์‚ฐ ์‹œ๊ฐ„์€ ํŠธ๋ฆฌ์˜ ๋†’์ด์™€ ๋น„๋ก€ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ ์ˆ˜๋ฅผ n์ด๋ผ๊ณ  ํ•˜๋ฉด ํž™ ํ˜•์„ฑ ์กฐ๊ฑด์— ๋”ฐ๋ผ ํŠธ๋ฆฌ์˜ ๋†’์ด๋Š” log2n ์ด๋ฏ€๋กœ ์žฌ๊ตฌ์ถ•์˜ ๊ณ„์‚ฐ์‹œ๊ฐ„์€ O(log n)์ด ๋œ๋‹ค. ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

์ถ”์ถœ์ถ”๊ฐ€
O(1)O(log n)

Binary search tree

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(Binary search tree)๋Š” ๊ทธ๋ž˜ํ”„์˜ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ๋‘ ๊ฐ€์ง€ ์„ฑ์งˆ์„ ์ง€๋‹Œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์„ฑ์งˆ์€, ๋ชจ๋“  ๋…ธ๋“œ๋Š” ์™ผ์ชฝ ๊ฐ€์ง€์— ํฌํ•จ๋˜๋Š” ์–ด๋–ค ์ˆซ์ž๋ณด๋‹ค๋„ ํฐ ์ˆซ์ž๊ฐ€ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋…ธ๋“œ 9๋Š” ๊ทธ ์™ผ์ชฝ์— ์žˆ๋Š” ๊ฐ€์ง€์˜ ๋ชจ๋“  ์ˆซ์ž(3, 8)๋ณด๋‹ค ํฌ๋‹ค. ๋‘ ๋ฒˆ์งธ ์„ฑ์งˆ์€, ๋ชจ๋“  ๋…ธ๋“œ๋Š” ๊ทธ ๋…ธ๋“œ์˜ ์˜ค๋ฅธ์ชฝ ๊ฐ€์ง€์— ํฌํ•จ๋˜๋Š” ์–ด๋–ค ์ˆซ์ž๋ณด๋‹ค ์ž‘์€ ์ˆซ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋…ธ๋“œ 15๋Š” ๊ทธ ์˜ค๋ฅธ์ชฝ ๊ฐ€์ง€์— ์žˆ๋Š” ์–ด๋–ค ์ˆ˜(23, 17, 28)๋ณด๋‹ค ์ž‘๋‹ค.

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

  1. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์— 1์„ ์ถ”๊ฐ€ํ•ด๋ณด์ž.
  2. ์ตœ์ƒ๋‹จ ๋…ธ๋“œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜์ž. ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•˜๋Š” 1์„ ํ˜„์žฌ ๋…ธ๋“œ ๊ฐ’๊ณผ ๋น„๊ตํ•ด์„œ ์ž‘์œผ๋ฉด ์™ผ์ชฝ์œผ๋กœ, ํฌ๋ฉด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค. (1 < 15 ์ด๋ฏ€๋กœ ์™ผ์ชฝ์œผ๋กœ ์ง„ํ–‰)
  3. 1 < 9 ์ด๋ฏ€๋กœ ์™ผ์ชฝ์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค.
  4. 1 < 3 ์ด๋ฏ€๋กœ ์™ผ์ชฝ์œผ๋กœ ์ง„ํ–‰ํ•ด์•ผ ํ•˜์ง€๋งŒ ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
  5. ๋‹ค์Œ์œผ๋กœ๋Š” ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•ด๋ณด์ž. ์˜ˆ๋ฅผ ๋“ค์–ด 28์„ ์‚ญ์ œํ•ด ๋ณด์ž.
  6. ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๋…ธ๋“œ๋Š” ๋Œ€์ƒ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œ๋งŒ ํ•˜๋ฉด ์ž‘์—…์ด ๋๋‚œ๋‹ค.
  7. ๋‹ค์Œ์œผ๋กœ๋Š” 9๋ฅผ ์‚ญ์ œํ•ด๋ณด์ž. ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋‘ ๊ฐœ์ธ ๊ฒฝ์šฐ๋Š” ๋จผ์ € ๋Œ€์ƒ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
  8. ์‚ญ์ œํ•œ ๋…ธ๋“œ์˜ ์™ผ์ชฝ ๊ฐ€์ง€์—์„œ ์ตœ๋Œ€ ๋…ธ๋“œ๋ฅผ ์ฐพ์•„ ์‚ญ์ œํ•œ ๋…ธ๋“œ์˜ ์œ„์น˜๋กœ ์ด๋™์‹œํ‚จ๋‹ค. (9๋Š” ์‚ฌ๋ผ์ง€๊ณ  8์ด ์˜ฌ๋ผ๊ฐ„๋‹ค)

์ด์ง„ ํŠธ๋ฆฌ์˜ ํƒ์ƒ‰์€ ํŠธ๋ฆฌ์˜ ๋†’์ด๋งŒํผ๋งŒ ๋น„๊ตํ•˜๋ฉด ๋˜๋ฏ€๋กœ ๋…ธ๋“œ๊ฐ€ n๊ฐœ ์žˆ๊ณ  ํŠธ๋ฆฌ๊ฐ€ ๊ท ํ˜• ์žกํžŒ ๊ฒฝ์šฐ๋ผ๋ฉด ์ตœ๋Œ€ log2n ํšŒ์˜ ๋น„๊ต๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ ํŠธ๋ฆฌ๊ฐ€ ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์ณ์„œ ์ง์„ ์— ๊ฐ€๊นŒ์šด ๋ชจ์–‘์ธ ๊ฒฝ์šฐ์—๋Š” ํŠธ๋ฆฌ๊ฐ€ ๋†’์•„์ ธ์„œ O(n)์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค.


๐Ÿ“Ž ์ฐธ๊ณ ์ž๋ฃŒ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋„๊ฐ(๋„์„œ)