๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿช CS

๋น„์„ ํ˜• ์ž๋ฃŒ ๊ตฌ์กฐ

๋น„์„ ํ˜• ์ž๋ฃŒ ๊ตฌ์กฐ

  • ์งˆ๋ฌธ

    1. ํ•ด์‹œํ…Œ์ด๋ธ”๊ณผ ์ด์ง„ ๊ฒ€์ƒ‰ํŠธ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜๊ณ  ์žฅ๋‹จ์ ์„ ์ด์•ผ๊ธฐํ•ด์ฃผ์„ธ์š”. ๊ทธ๋ฆฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ œํ•œ๋œ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์šฉ ์ฃผ์†Œ๋ก์— ์‚ฌ์šฉํ•  ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•œ๋‹ค๋ฉด ์–ด๋А์ชฝ์„ ์“ฐ๋Š”๊ฒƒ์ด ์ข‹์„๊นŒ์š”?

      • ํ•ด์‹œํ…Œ์ด๋ธ”์€ ํ‚ค์™€ ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์Œ์„ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ, ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ํ‰๊ท ์ ์œผ๋กœ ์ƒ์ˆ˜ ์‹œ๊ฐ„์— ์‚ฝ์ž…, ์‚ญ์ œ, ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋Š” ์„ ํ˜• ์‹œ๊ฐ„์œผ๋กœ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ง„ ๊ฒ€์ƒ‰ํŠธ๋ฆฌ๋Š” ๊ฐ ๋…ธ๋“œ๊ฐ€ ํ‚ค์™€ ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ, ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค๋ณด๋‹ค ์ž‘์€ ๊ฐ’์œผ๋กœ, ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค๋ณด๋‹ค ํฐ ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ํ‰๊ท ์ ์œผ๋กœ O(log n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด์‹œํ…Œ์ด๋ธ”๋ณด๋‹ค๋Š” ์ด์ง„ ๊ฒ€์ƒ‰ํŠธ๋ฆฌ๊ฐ€ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ•ด์‹œํ…Œ์ด๋ธ”์ด ์ถฉ๋Œ ์‹œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ์ด์ง„ ๊ฒ€์ƒ‰ํŠธ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ œํ•œ๋œ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ๋„ ์ ์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์œผ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ๋Š” ์ฃผ์†Œ๋ก์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฏ€๋กœ ๋™์ ์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋Š” ์ด์ง„ ๊ฒ€์ƒ‰ํŠธ๋ฆฌ์˜ ์žฅ์ ์ด ๋”์šฑ ๋ถ€๊ฐ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ œํ•œ๋œ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์šฉ ์ฃผ์†Œ๋ก์—๋Š” ์ด์ง„ ๊ฒ€์ƒ‰ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
    2. ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์ถฉ๋Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์—๋Š” ์–ด๋–ค ๊ฒƒ์ด ์žˆ๊ณ , ๊ฐ๊ฐ์˜ ์žฅ๋‹จ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

      • ํ•ด์‹œ ํ…Œ์ด๋ธ”์—์„œ ์ถฉ๋Œ์€ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๊ณ„์‚ฐ๋œ ์ธ๋ฑ์Šค์— ์ด๋ฏธ ๊ฐ’์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ฆฌ์—ฐ๊ฒฐ๋ฒ•(Separate Chaining)์€ ํ‚ค-๊ฐ’ ์Œ์„ ์ €์žฅํ•ด ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ํฌ๊ธฐ์— ์ œํ•œ์ด ์—†์œผ๋ฉฐ, ์ถฉ๋Œ์ด ๋งŽ์€ ๊ฒฝ์šฐ์—๋„ ๋น ๋ฅธ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ ์€ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐฉ ์ฃผ์†Œ๋ฒ•(Open Addressing)์€ ๋นˆ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์•„ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ด์‹œ ํ…Œ์ด๋ธ” ํฌ๊ธฐ๊ฐ€ ์ž‘์œผ๋ฉด ์ถฉ๋Œ์ด ๋งŽ์•„์ ธ ๊ฒ€์ƒ‰ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ๋นˆ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์—์„œ ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    3. List์™€ Set์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ๋ง์”€ํ•ด์ฃผ์„ธ์š”.

      • List์—๋Š” ์ค‘๋ณต๋˜๊ฒŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ Set์€ ์ค‘๋ณต์ด ํ—ˆ์šฉ์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. List์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ Set์— ๋„ฃ์œผ๋ฉด ์ค‘๋ณต์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. DB์˜ distinct์—ฐ์‚ฐ์„ ํ•˜๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘๋ณต์ด ์ œ๊ฑฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— set์— ๋“ค์–ด ์žˆ๋‹ค๋ฉด ๊ณ ์œ ์„ฑ์ด ๋ณด์žฅ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ค‘๋ณต์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์•ˆํ•ด์ค˜๋„ ๋ฉ๋‹ˆ๋‹ค.
        ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘, ์ฒ˜๋ฆฌ ํ•  ๋•Œ ์ค‘๋ณต๋œ ์ž๋ฃŒ๋“ค์ด ์ˆ˜์ง‘์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฐ๊ณผ๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋“ค์„ set์— ๋„ฃ์œผ๋ฉด ์ค‘๋ณต์ด ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋”๋ผ๋„ set์•ˆ์— ๋“ค์–ด๊ฐ€๋ฉด ์ค‘๋ณต์ด ์—†์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด ๋ณด์žฅ์ด ๋ฉ๋‹ˆ๋‹ค.
    4. ํŠธ๋ฆฌ์˜ ๋ถ€๋ชจ-์ž์‹์— ๋Œ€ํ•œ swap์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์™€ ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

      • ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์—์„œ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ , ๊ทธ ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž… ์œ„์น˜์— ๋งž๊ฒŒ ์žฌ์กฐ์ •ํ•  ๋•Œ, ์‚ญ์ œ๋œ ๋…ธ๋“œ์˜ ์œ„์น˜๋ฅผ ๋Œ€์ฒดํ•  ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์ฐพ์•„์•ผ ํ•  ๋•Œ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
        ๋…ธ๋“œ A๋ฅผ ๊ธฐ์ค€์œผ๋กœ, A์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ B์™€ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ C๊ฐ€ ์žˆ์„ ๋•Œ, B์™€ A์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ€ ๊ฒฝ์šฐ๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค๊ฒ ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ B๊ฐ€ A์˜ ์™ผ์ชฝ ์ž์‹์ด๋ฏ€๋กœ, B์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹ D๋ฅผ A์˜ ์™ผ์ชฝ ์ž์‹์œผ๋กœ ์˜ฎ๊ธฐ๊ณ , A๋ฅผ B์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹์œผ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ B๊ฐ€ A์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ๋˜์—ˆ์œผ๋ฏ€๋กœ, B์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ A์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ฆ‰, B์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ A์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , A๋ฅผ B์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ถ€๋ชจ-์ž์‹ ์Šค์™‘์„ ํ†ตํ•ด B์™€ A์˜ ์œ„์น˜๊ฐ€ ๋ฐ”๋€Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ํŠธ๋ฆฌ์˜ ๋†’์ด๋ฅผ ์ค„์ด๋Š” ๋ฐ์—๋„ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.
    5. ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์–ด๋–ค ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š”๊ฒŒ ํšจ์œจ์„ฑ์ด ์ œ์ผ ์ข‹์„๊นŒ์š”?

      1. ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      2. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
    6. ํ•ด์‹œํ…Œ์ด๋ธ”๊ณผ ํ•ด์‹œ๋งต์˜ ์ฐจ์ด์ 

      1. ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒŒ ๊ณตํ†ต์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๊ตฌํ˜„์ฒด ์ฐจ์ด์ž…๋‹ˆ๋‹ค.
      2. ํ•ด์‹œ๋งต์€ ๋น„๋™๊ธฐ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ, ํ‚ค๋Š” ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•˜๋˜ ๊ฐ’์€ ๋„์ด์—ฌ๋„ ๋œ๋‹ค.(๋ฐ˜๋Œ€๋„ ๊ฐ€๋Šฅ)

๋น„์„ ํ˜• ์ž๋ฃŒ ๊ตฌ์กฐ


์ผ๋ ฌ๋กœ ๋‚˜์—ดํ•˜์ง€ ์•Š๊ณ  ์ž๋ฃŒ ์ˆœ์„œ๋‚˜ ๊ด€๊ณ„๊ฐ€ ๋ณต์žกํ•œ ๊ตฌ์กฐ

  • ํŠธ๋ฆฌ
  • ๊ทธ๋ž˜ํ”„

1. ๊ทธ๋ž˜ํ”„(graph)


์ •์ (vertext)๊ณผ ๊ฐ„์„ (edge)์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ง‘ํ•ฉ

  • ๋‹จ๋ฐฉํ–ฅ ๊ฐ„์„ , ์–‘๋ฐฉํ–ฅ ๊ฐ„์„ 
  • ์ •์ ์˜ outdegree : ์ •์ ์œผ๋กœ ๋‚˜๊ฐ€๋Š” ๊ฐ„์„ 
  • ์ •์ ์˜ indegree : ๋“ค์–ด์˜ค๋Š” ๊ฐ„์„ 
  • ์ •์ ์€ V ๋˜๋Š” U๋ผ๊ณ  ํ•œ๋‹ค.
  • U์—์„œ๋ถ€ํ„ฐ V๋กœ ๊ฐ„๋‹ค : ์–ด๋–ค ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์–ด๋–ค ์ •์ ๊นŒ์ง€ ๊ฐ„๋‹ค.

๊ฐ€์ค‘์น˜

: ๊ฐ„์„ ๊ณผ ์ •์  ์‚ฌ์ด์— ๋“œ๋Š” ๋น„์šฉ

  • 1๋ฒˆ ๋…ธ๋“œ์™€ 2๋ฒˆ ๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€๋Š” ๋น„์šฉ์ด ํ•œ ์นธ์ด๋ผ๋ฉด, 1๋ฒˆ ๋…ธ๋“œ์—์„œ 2๋ฒˆ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฐ€์ค‘์น˜๋Š” ํ•œ ์นธ์ด๋‹ค.

์ธ์ ‘ ํ–‰๋ ฌ: ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„

์ธ์ ‘ ๋ฆฌ์ŠคํŠธ: ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„

2. ํŠธ๋ฆฌ


์ •์ ๊ณผ ๊ฐ„์„ ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ฐฐ์—ด๋œ ์ผ์ข…์˜ ๊ณ„์ธต์  ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ

  • ๊ตฌ์„ฑ : ๋ฃจํŠธ ๋…ธ๋“œ, ๋‚ด๋ถ€ ๋…ธ๋“œ, ๋ฆฌํ”„ ๋…ธ๋“œ ๋“ฑ
  • ์ˆฒ : ํŠธ๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ง„ ์ง‘ํ•ฉ

ํŠน์ง•

  1. ๋ถ€๋ชจ, ์ž์‹ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ๊ฐ™์€ ๊ฒฝ๋กœ์ƒ์—์„œ ์–ด๋–ค ๋…ธ๋“œ๋ณด๋‹ค ์œ„์— ์žˆ์œผ๋ฉด ๋ถ€๋ชจ, ์•„๋ž˜์— ์žˆ์œผ๋ฉด ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค.
  2. V - 1 = E (๊ฐ„์„  ์ˆ˜ = ๋…ธ๋“œ ์ˆ˜ - 1)
  3. ์ž„์˜์˜ ๋‘ ๋…ธ๋“œ ์‚ฌ์ด์˜ ๊ฒฝ๋กœ๋Š” ์œ ์ผ๋ฌด์ด ํ•˜๊ฒŒ ์กด์žฌ ํ•œ๋‹ค. ์ฆ‰, ํŠธ๋ฆฌ ๋‚ด์˜ ์–ด๋–ค ๋…ธ๋“œ์™€ ์–ด๋–ค ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋Š” ๋ฐ˜๋“œ์‹œ ์žˆ๋‹ค.

๊ตฌ์„ฑ

  • ๋ฃจํŠธ ๋…ธ๋“œ :๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋…ธ๋“œ
    • ๋ณดํ†ต ํŠธ๋ฆฌ ๋ฌธ์ œ๊ฐ€ ๋‚˜์˜ค๊ณ  ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์‰ฝ๊ฒŒ ํ’€๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
  • ๋‚ด๋ถ€ ๋…ธ๋“œ : ๋ฃจํŠธ ๋…ธ๋“œ์™€ ๋‚ด๋ถ€ ๋…ธ๋“œ ์‚ฌ์ด์— ์žˆ๋Š” ๋…ธ๋“œ
  • ๋ฆฌํ”„ ๋…ธ๋“œ : ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๋…ธ๋“œ

ํŠธ๋ฆฌ์˜ ๋†’์ด์™€ ๋ ˆ๋ฒจ

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

์ด์ง„ ํŠธ๋ฆฌ

์ž์‹์˜ ๋…ธ๋“œ ์ˆ˜๊ฐ€ ๋‘ ๊ฐœ ์ดํ•˜์ธ ํŠธ๋ฆฌ

๋ถ„๋ฅ˜

  • ์ •์ด์ง„ ํŠธ๋ฆฌ(full binary tree) : ์ž์‹ ๋…ธ๋“œ๊ฐ€ 0 ๋˜๋Š” ๋‘ ๊ฐœ์ธ ์ด์ง„ ํŠธ๋ฆฌ
  • ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(complete binary tree) : ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ ์ฒด์›Œ์ ธ ์žˆ๋Š” ์ด์ง„ ํŠธ๋ฆฌ
    • ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋“  ๋ ˆ๋ฒจ์ด ์™„์ „ํžˆ ์ฑ„์›Œ์ ธ ์žˆ์œผ๋ฉฐ, ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์˜ ๊ฒฝ์šฐ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฑ„์›Œ์ ธ ์žˆ๋‹ค.
  • ๋ณ€์งˆ ์ด์ง„ ํŠธ๋ฆฌ(degenerate binary tree) : ์ž์‹ ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜๋ฐ–์— ์—†๋Š” ์ด์ง„ ํŠธ๋ฆฌ
  • ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ(perfect binary tree) : ๋ชจ๋“œ ๋…ธ๋“œ๊ฐ€ ๊ฝ‰ ์ฐจ ์žˆ๋Š” ์ด์ง„ ํŠธ๋ฆฌ
  • ๊ท ํ˜• ์ด์ง„ ํŠธ๋ฆฌ(balanced binary tree) : ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ์˜ ๋†’์ด ์ฐจ์ด๊ฐ€ 1 ์ดํ•˜์ธ ์ด์ง„ ํŠธ๋ฆฌ
    • map, set์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ ˆ๋“œ ๋ธ”๋ž™ ํŠธ๋ฆฌ

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(BST)

๋…ธ๋“œ์˜ ์˜ค๋ฅธ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ์—๋Š” โ€˜๋…ธ๋“œ ๊ฐ’๋ณด๋‹ค ํฐ ๊ฐ’โ€™์ด ์žˆ๋Š” ๋…ธ๋“œ๋งŒ ํฌํ•จ๋˜๊ณ , ์™ผ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ์—๋Š” โ€˜๋…ธ๋“œ ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฐ’โ€™์ด ๋“ค์–ด ์žˆ๋Š” ํŠธ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค.

  • ์™ผ์ชฝ์—๋Š” ์ž‘์€ ๊ฐ’, ์˜ค๋ฅธ์ชฝ์—๋Š” ํฐ ๊ฐ’์ด ์ด๋ฏธ ์ •ํ•ด์ ธ ์žˆ์–ด์„œ ๊ฒ€์ƒ‰์— ์šฉ์ดํ•˜๋‹ค.
  • ์š”์†Œ๋ฅผ ์ฐพ์„ ๋•Œ ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(log n)
  • ์ตœ์•…์˜ ๊ฒฝ์šฐ : O(n) - ์‚ฝ์ž… ์ˆœ์„œ์— ๋”ฐ๋ผ ์„ ํ˜•์ ์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

AVL ํŠธ๋ฆฌ(Adelson-Velsky and Landis tree)

์ตœ์•…์˜ ๊ฒฝ์šฐ ์„ ํ˜•์ ์ธ ํŠธ๋ฆฌ๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์Šค์Šค๋กœ ๊ท ํ˜•์„ ์žก๋Š” ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ

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

๋ ˆ๋“œ ๋ธ”๋ž™ ํŠธ๋ฆฌ

๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ

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

3. ํž™


์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ, ์ตœ์†Œํž™๊ณผ ์ตœ๋Œ€ํž™์ด ์žˆ๋‹ค. ํ•ด๋‹น ํž™์— ๋”ฐ๋ผ ํŠน์ •ํ•œ ํŠน์ง•์„ ์ง€ํ‚จ ํŠธ๋ฆฌ์ด๋‹ค.

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

์ตœ๋Œ€ํž™์˜ ์‚ฝ์ž…

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

์˜ˆ๋ฅผ ๋“ค์–ด, 8์ด๋ผ๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ๋…ธ๋“œ ๋ฐ‘์— 15๋ผ๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค๊ณ  ํ•˜๋ฉด ์ด ๋…ธ๋“œ๊ฐ€ ์ ์ฐจ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ ํ•ด๋‹น ๋…ธ๋“œ ์œ„์— ์žˆ๋Š” ๋…ธ๋“œ์™€ ์Šค์™‘ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ ์ตœ๋Œ€ํž™ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๊ฒŒ ๋œ๋‹ค.

์ตœ๋Œ€ํž™์˜ ์‚ญ์ œ

์ตœ๋Œ€ํž™์—์„œ ์ตœ๋Œ“๊ฐ’์€ ๋ฃจํŠธ ๋…ธ๋“œ์ด๋ฏ€๋กœ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์‚ญ์ œ๋˜๊ณ , ๊ทธ ์ดํ›„ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์™€ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์Šค์™‘ํ•˜๋ฉฐ ๋˜๋‹ค์‹œ ์Šค์™‘ ๋“ฑ์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ ์žฌ๊ตฌ์„ฑ๋œ๋‹ค.

4. ์šฐ์„ ์ˆœ์œ„ ํ


์šฐ์„ ์ˆœ์œ„ ๋Œ€๊ธฐ์—ด์ด๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ๋Œ€๊ธฐ์—ด์—์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์š”์†Œ๊ฐ€ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์š”์†Œ๋ณด๋‹ค ๋จผ์ € ์ œ๊ณต๋˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ

  • ํž™์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„

5. ๋งต


ํŠน์ • ์ˆœ์„œ์— ๋”ฐ๋ผ ํ‚ค์™€ ๋งคํ•‘๋œ ๊ฐ’์˜ ์กฐํ•ฉ์œผ๋กœ ํ˜•์„ฑ๋œ ์ž๋ฃŒ ๊ตฌ์กฐ

  • ๋ ˆ๋“œ ๋ธ”๋ž™ ํŠธ๋ฆฌ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ˜•์„ฑ๋˜๊ณ , ์‚ฝ์ž…ํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค.

  • map.put()

  • get : key์— ํ•ด๋‹นํ•˜๋Š” value๊ฐ’์„ ์–ป๋Š”๋‹ค.

    • getOrDefault : null ๋Œ€์‹  ๋””ํดํŠธ ๊ฐ’์„ ์–ป๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ
  • size : Map ๊ฐฏ์ˆ˜ ๋ฆฌํ„ด

  • remove : ๋งต์˜ ํ•ญ๋ชฉ ์‚ญ์ œํ•˜๋Š” ๋ฉ”์„œ๋“œ

    • key๊ฐ’์— ํ•ด๋‹น๋˜๋Š” ์•„์ดํ…œ(key, value)์„ ์‚ญ์ œํ•œ ํ›„ ๊ทธ value ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.
  • keySet : ๋งต(Map)์˜ ๋ชจ๋“  Key๋ฅผ ๋ชจ์•„์„œ ๋ฆฌํ„ดํ•œ๋‹ค.

keySet() ๋ฉ”์„œ๋“œ๋Š” Map์˜ ๋ชจ๋“  Key๋ฅผ ๋ชจ์•„์„œ Set ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค. Set ์ž๋ฃŒํ˜•์€ ์ž ์‹œํ›„์— ์•Œ์•„๋ณธ๋‹ค. Set ์ž๋ฃŒํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด List ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฐ”๊พธ์–ด ์‚ฌ์šฉํ• ์ˆ˜๋„ ์žˆ๋‹ค.

List<String> keyList =newArrayList<>(map.keySet());

6. ์…‹(set)


ํŠน์ • ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ณ ์œ ํ•œ ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ

์ค‘๋ณต๋˜๋Š” ์š”์†Œ๋Š” ์—†๊ณ  ์˜ค๋กœ์ง€ ํฌ์†Œํ•œ(unique) ๊ฐ’๋งŒ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ

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


๋ฌดํ•œ์— ๊ฐ€๊นŒ์šด ๋ฐ์ดํ„ฐ(ํ‚ค)๋“ค์„ ์œ ํ•œํ•œ ๊ฐœ์ˆ˜์˜ ํ•ด์‹œ ๊ฐ’์œผ๋กœ ๋งคํ•‘ํ•œ ํ…Œ์ด๋ธ”

์ด๋ฅผ ํ†ตํ•ด ์ž‘์€ ํฌ๊ธฐ์˜ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋„๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์‚ฝ์ž…, ์‚ญ์ œ, ํƒ์ƒ‰ ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(1)