๋น์ ํ ์๋ฃ ๊ตฌ์กฐ
์ง๋ฌธ
ํด์ํ ์ด๋ธ๊ณผ ์ด์ง ๊ฒ์ํธ๋ฆฌ๋ฅผ ๋น๊ตํ๊ณ ์ฅ๋จ์ ์ ์ด์ผ๊ธฐํด์ฃผ์ธ์. ๊ทธ๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ํ๋ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์ฉ ์ฃผ์๋ก์ ์ฌ์ฉํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋ค๋ฉด ์ด๋์ชฝ์ ์ฐ๋๊ฒ์ด ์ข์๊น์?
- ํด์ํ ์ด๋ธ์ ํค์ ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง ์์ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ฉฐ, ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ์ฅํ๊ฑฐ๋ ๊ฒ์ํฉ๋๋ค. ํ๊ท ์ ์ผ๋ก ์์ ์๊ฐ์ ์ฝ์ , ์ญ์ , ๊ฒ์์ด ๊ฐ๋ฅํ์ง๋ง, ์ต์ ์ ๊ฒฝ์ฐ์๋ ์ ํ ์๊ฐ์ผ๋ก ๋๋ ค์ง ์ ์์ต๋๋ค. ์ด์ง ๊ฒ์ํธ๋ฆฌ๋ ๊ฐ ๋ ธ๋๊ฐ ํค์ ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ์ด๋ฉฐ, ์ผ์ชฝ ์๋ธํธ๋ฆฌ๋ ๋ถ๋ชจ ๋ ธ๋์ ํค๋ณด๋ค ์์ ๊ฐ์ผ๋ก, ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ ๋ถ๋ชจ ๋ ธ๋์ ํค๋ณด๋ค ํฐ ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค. ํ๊ท ์ ์ผ๋ก O(log n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ฉฐ, ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌ๋ ์์๋ก ์ป์ ์ ์์ต๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ํด์ํ ์ด๋ธ๋ณด๋ค๋ ์ด์ง ๊ฒ์ํธ๋ฆฌ๊ฐ ์ ํฉํฉ๋๋ค. ์ด๋ ํด์ํ ์ด๋ธ์ด ์ถฉ๋ ์ ํด๊ฒฐ์ ์ํด ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ฉด, ์ด์ง ๊ฒ์ํธ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก, ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ํ๋ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์๋ ์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ผ๋ก ๊ตฌํ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ํ, ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์๋ ์ฃผ์๋ก์ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ์ญ์ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก ๋์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๋ ์ด์ง ๊ฒ์ํธ๋ฆฌ์ ์ฅ์ ์ด ๋์ฑ ๋ถ๊ฐ๋ฉ๋๋ค. ๋ฐ๋ผ์, ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ํ๋ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์ฉ ์ฃผ์๋ก์๋ ์ด์ง ๊ฒ์ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํฉ๋๋ค.
ํด์ ํ ์ด๋ธ์ ์ถฉ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์๋ ์ด๋ค ๊ฒ์ด ์๊ณ , ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ ๋ฌด์์ธ๊ฐ์?
- ํด์ ํ ์ด๋ธ์์ ์ถฉ๋์ ํด์ ํจ์๋ฅผ ์ฌ์ฉํด ๊ณ์ฐ๋ ์ธ๋ฑ์ค์ ์ด๋ฏธ ๊ฐ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ๋ฅผ ๋งํฉ๋๋ค. ์ถฉ๋์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ๋ถ๋ฆฌ์ฐ๊ฒฐ๋ฒ(Separate Chaining)์ ํค-๊ฐ ์์ ์ ์ฅํด ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ถฉ๋์ ํด๊ฒฐํฉ๋๋ค. ํฌ๊ธฐ์ ์ ํ์ด ์์ผ๋ฉฐ, ์ถฉ๋์ด ๋ง์ ๊ฒฝ์ฐ์๋ ๋น ๋ฅธ ๊ฒ์์ด ๊ฐ๋ฅํฉ๋๋ค. ๋จ์ ์ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ง์์ง ์ ์์ต๋๋ค. ๊ฐ๋ฐฉ ์ฃผ์๋ฒ(Open Addressing)์ ๋น ์ธ๋ฑ์ค๋ฅผ ์ฐพ์ ์ถฉ๋์ ํด๊ฒฐํฉ๋๋ค. ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ ์ต๋๋ค. ๊ทธ๋ฌ๋ ํด์ ํ ์ด๋ธ ํฌ๊ธฐ๊ฐ ์์ผ๋ฉด ์ถฉ๋์ด ๋ง์์ ธ ๊ฒ์ ์๊ฐ์ด ๊ธธ์ด์ง ์ ์์ต๋๋ค. ๋ํ ๊ท์น์ ๋ฐ๋ผ ๋น ์ธ๋ฑ์ค๋ฅผ ์ฐพ๋ ๊ณผ์ ์์ ๋ฌดํ ๋ฃจํ์ ๋น ์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
List์ Set์ ์ฐจ์ด์ ์ ๋ํด ๋ง์ํด์ฃผ์ธ์.
- List์๋ ์ค๋ณต๋๊ฒ ๋ค์ด๊ฐ ์ ์์ง๋ง Set์ ์ค๋ณต์ด ํ์ฉ์ด ๋์ง ์์ต๋๋ค. List์ ์๋ ๋ฐ์ดํฐ๋ฅผ Set์ ๋ฃ์ผ๋ฉด ์ค๋ณต์ด ์ ๊ฑฐ๋ฉ๋๋ค. DB์ distinct์ฐ์ฐ์ ํ๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค. ์ค๋ณต์ด ์ ๊ฑฐ๋๊ธฐ ๋๋ฌธ์ set์ ๋ค์ด ์๋ค๋ฉด ๊ณ ์ ์ฑ์ด ๋ณด์ฅ ๋ฉ๋๋ค. ๊ทธ๋์ ์ค๋ณต์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ํด์ค๋ ๋ฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์์ง, ์ฒ๋ฆฌ ํ ๋ ์ค๋ณต๋ ์๋ฃ๋ค์ด ์์ง์ด ๋ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ฒฐ๊ณผ๋ ์ค๋ณต๋์ง ์์์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ค๋ณต๋ ๋ฐ์ดํฐ๋ค์ set์ ๋ฃ์ผ๋ฉด ์ค๋ณต์ด ๋ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ๋ set์์ ๋ค์ด๊ฐ๋ฉด ์ค๋ณต์ด ์์ด์ง๊ธฐ ๋๋ฌธ์ ์ค๋ณต์ด ์๋ค๋ ๊ฒ์ด ๋ณด์ฅ์ด ๋ฉ๋๋ค.
- List์๋ ์ค๋ณต๋๊ฒ ๋ค์ด๊ฐ ์ ์์ง๋ง Set์ ์ค๋ณต์ด ํ์ฉ์ด ๋์ง ์์ต๋๋ค. List์ ์๋ ๋ฐ์ดํฐ๋ฅผ Set์ ๋ฃ์ผ๋ฉด ์ค๋ณต์ด ์ ๊ฑฐ๋ฉ๋๋ค. DB์ distinct์ฐ์ฐ์ ํ๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค. ์ค๋ณต์ด ์ ๊ฑฐ๋๊ธฐ ๋๋ฌธ์ set์ ๋ค์ด ์๋ค๋ฉด ๊ณ ์ ์ฑ์ด ๋ณด์ฅ ๋ฉ๋๋ค. ๊ทธ๋์ ์ค๋ณต์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ํด์ค๋ ๋ฉ๋๋ค.
ํธ๋ฆฌ์ ๋ถ๋ชจ-์์์ ๋ํ swap์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ์ผ์ด๋๋ ๊ณผ์ ์ ์ค๋ช ํด์ฃผ์ธ์.
- ์ด์ง ๊ฒ์ ํธ๋ฆฌ์์ ์๋ก์ด ๋
ธ๋๋ฅผ ์ฝ์
ํ๊ณ , ๊ทธ ๋
ธ๋๋ฅผ ์ฝ์
์์น์ ๋ง๊ฒ ์ฌ์กฐ์ ํ ๋, ์ญ์ ๋ ๋
ธ๋์ ์์น๋ฅผ ๋์ฒดํ ์๋ก์ด ๋
ธ๋๋ฅผ ์ฐพ์์ผ ํ ๋์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ ธ๋ A๋ฅผ ๊ธฐ์ค์ผ๋ก, A์ ์ผ์ชฝ ์์ ๋ ธ๋ B์ ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋ C๊ฐ ์์ ๋, B์ A์ ์์น๋ฅผ ๋ฐ๊ฟ ๊ฒฝ์ฐ๋ฅผ ์์๋ก ๋ค๊ฒ ์ต๋๋ค. ๋ ธ๋ B๊ฐ A์ ์ผ์ชฝ ์์์ด๋ฏ๋ก, B์ ์ค๋ฅธ์ชฝ ์์ D๋ฅผ A์ ์ผ์ชฝ ์์์ผ๋ก ์ฎ๊ธฐ๊ณ , A๋ฅผ B์ ์ค๋ฅธ์ชฝ ์์์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค. ์ด์ B๊ฐ A์ ๋ถ๋ชจ ๋ ธ๋๊ฐ ๋์์ผ๋ฏ๋ก, B์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ A์ ๋ถ๋ชจ ๋ ธ๋๋ก ๋ฐ๊ฟ๋๋ค. ์ฆ, B์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ A์ ๋ถ๋ชจ ๋ ธ๋๋ก ๋ณ๊ฒฝํ๊ณ , A๋ฅผ B์ ๋ถ๋ชจ ๋ ธ๋๋ก ์ฐ๊ฒฐํฉ๋๋ค. ์ด๋ ๊ฒ ๋ถ๋ชจ-์์ ์ค์์ ํตํด B์ A์ ์์น๊ฐ ๋ฐ๋๊ฒ ๋ฉ๋๋ค. ์ด ๊ณผ์ ์ ํธ๋ฆฌ์ ๋์ด๋ฅผ ์ค์ด๋ ๋ฐ์๋ ํ์ฉ๋ฉ๋๋ค.
- ์ด์ง ๊ฒ์ ํธ๋ฆฌ์์ ์๋ก์ด ๋
ธ๋๋ฅผ ์ฝ์
ํ๊ณ , ๊ทธ ๋
ธ๋๋ฅผ ์ฝ์
์์น์ ๋ง๊ฒ ์ฌ์กฐ์ ํ ๋, ์ญ์ ๋ ๋
ธ๋์ ์์น๋ฅผ ๋์ฒดํ ์๋ก์ด ๋
ธ๋๋ฅผ ์ฐพ์์ผ ํ ๋์ ์ฌ์ฉ๋ฉ๋๋ค.
์ฐ์ ์์ ํ๋ ์ด๋ค ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋๊ฒ ํจ์จ์ฑ์ด ์ ์ผ ์ข์๊น์?
- ์ฐ์ ์์๋ฅผ ์ ํ ์ ์์ด์ผ ํฉ๋๋ค.
- ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
ํด์ํ ์ด๋ธ๊ณผ ํด์๋งต์ ์ฐจ์ด์
- ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค๋ ๊ฒ ๊ณตํต์ ์ด ์กด์ฌํฉ๋๋ค. ๋๋ถ๋ถ ๊ตฌํ์ฒด ์ฐจ์ด์ ๋๋ค.
- ํด์๋งต์ ๋น๋๊ธฐ์์ ์ฌ์ฉ ๊ฐ๋ฅ, ํค๋ ๋ฐ๋์ ์กด์ฌํ๋ ๊ฐ์ ๋์ด์ฌ๋ ๋๋ค.(๋ฐ๋๋ ๊ฐ๋ฅ)
๋น์ ํ ์๋ฃ ๊ตฌ์กฐ
์ผ๋ ฌ๋ก ๋์ดํ์ง ์๊ณ ์๋ฃ ์์๋ ๊ด๊ณ๊ฐ ๋ณต์กํ ๊ตฌ์กฐ
- ํธ๋ฆฌ
- ๊ทธ๋ํ
1. ๊ทธ๋ํ(graph)
์ ์ (vertext)๊ณผ ๊ฐ์ (edge)์ผ๋ก ์ด๋ฃจ์ด์ง ์งํฉ
- ๋จ๋ฐฉํฅ ๊ฐ์ , ์๋ฐฉํฅ ๊ฐ์
- ์ ์ ์ outdegree : ์ ์ ์ผ๋ก ๋๊ฐ๋ ๊ฐ์
- ์ ์ ์ indegree : ๋ค์ด์ค๋ ๊ฐ์
- ์ ์ ์ V ๋๋ U๋ผ๊ณ ํ๋ค.
- U์์๋ถํฐ V๋ก ๊ฐ๋ค : ์ด๋ค ์ ์ ์ผ๋ก๋ถํฐ ์์ํด์ ์ด๋ค ์ ์ ๊น์ง ๊ฐ๋ค.
๊ฐ์ค์น
: ๊ฐ์ ๊ณผ ์ ์ ์ฌ์ด์ ๋๋ ๋น์ฉ
- 1๋ฒ ๋ ธ๋์ 2๋ฒ ๋ ธ๋๊น์ง ๊ฐ๋ ๋น์ฉ์ด ํ ์นธ์ด๋ผ๋ฉด, 1๋ฒ ๋ ธ๋์์ 2๋ฒ ๋ ธ๋๊น์ง์ ๊ฐ์ค์น๋ ํ ์นธ์ด๋ค.
์ธ์ ํ๋ ฌ: ๋ฐฐ์ด๋ก ๊ตฌํ
์ธ์ ๋ฆฌ์คํธ: ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ๊ตฌํ
2. ํธ๋ฆฌ
์ ์ ๊ณผ ๊ฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ฐฐ์ด๋ ์ผ์ข ์ ๊ณ์ธต์ ๋ฐ์ดํฐ์ ์งํฉ
- ๊ตฌ์ฑ : ๋ฃจํธ ๋ ธ๋, ๋ด๋ถ ๋ ธ๋, ๋ฆฌํ ๋ ธ๋ ๋ฑ
- ์ฒ : ํธ๋ฆฌ๋ก ์ด๋ฃจ์ด์ง ์งํฉ
ํน์ง
- ๋ถ๋ชจ, ์์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค. ๊ฐ์ ๊ฒฝ๋ก์์์ ์ด๋ค ๋ ธ๋๋ณด๋ค ์์ ์์ผ๋ฉด ๋ถ๋ชจ, ์๋์ ์์ผ๋ฉด ์์ ๋ ธ๋๊ฐ ๋๋ค.
- V - 1 = E (๊ฐ์ ์ = ๋ ธ๋ ์ - 1)
- ์์์ ๋ ๋
ธ๋ ์ฌ์ด์ ๊ฒฝ๋ก๋
์ ์ผ๋ฌด์ด
ํ๊ฒ์กด์ฌ
ํ๋ค. ์ฆ, ํธ๋ฆฌ ๋ด์ ์ด๋ค ๋ ธ๋์ ์ด๋ค ๋ ธ๋๊น์ง์ ๊ฒฝ๋ก๋ ๋ฐ๋์ ์๋ค.
๊ตฌ์ฑ
- ๋ฃจํธ ๋
ธ๋ :๊ฐ์ฅ ์์ ์๋ ๋
ธ๋
- ๋ณดํต ํธ๋ฆฌ ๋ฌธ์ ๊ฐ ๋์ค๊ณ ํธ๋ฆฌ๋ฅผ ํ์ํ ๋ ๋ฃจํธ ๋ ธ๋๋ฅผ ์ค์ฌ์ผ๋ก ํ์ํ๋ฉด ๋ฌธ์ ๊ฐ ์ฝ๊ฒ ํ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- ๋ด๋ถ ๋ ธ๋ : ๋ฃจํธ ๋ ธ๋์ ๋ด๋ถ ๋ ธ๋ ์ฌ์ด์ ์๋ ๋ ธ๋
- ๋ฆฌํ ๋ ธ๋ : ์์ ๋ ธ๋๊ฐ ์๋ ๋ ธ๋
ํธ๋ฆฌ์ ๋์ด์ ๋ ๋ฒจ
- ๊น์ด : ๊ฐ ๋ ธ๋๋ง๋ค ๋ค๋ฅด๋ฉฐ, ๋ฃจํธ ๋ ธ๋๋ถํฐ ํน์ ๋ ธ๋๊น์ง ์ต๋จ ๊ฑฐ๋ฆฌ๋ก ๊ฐ์ ๋์ ๊ฑฐ๋ฆฌ
- ๋์ด : ๋ฃจํธ ๋ ธ๋๋ถํฐ ๋ฆฌํ ๋ ธ๋๊น์ง ๊ฑฐ๋ฆฌ ์ค ๊ฐ์ฅ ๊ธด ๊ฑฐ๋ฆฌ
- ๋ ๋ฒจ : ๊น์ด์ ๊ฐ์ ์๋ฏธ
- ์๋ธํธ๋ฆฌ : ํธ๋ฆฌ ๋ด์ ํ์ ์งํฉ์ผ๋ก, ํธ๋ฆฌ ๋ด์ ์๋ ๋ถ๋ถ์งํฉ์ด๋ผ๊ณ ๋ ํ๋ค.
์ด์ง ํธ๋ฆฌ
์์์ ๋ ธ๋ ์๊ฐ ๋ ๊ฐ ์ดํ์ธ ํธ๋ฆฌ
๋ถ๋ฅ
- ์ ์ด์ง ํธ๋ฆฌ(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)
'๐ช CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ด๊ฐ ๋ง๋ ์ฟ ํค ๋๋ฅผ ์ํด ๊ตฌ์ ์ง (0) | 2023.03.16 |
---|---|
ํธ๋์ญ์ ๊ณผ ๋ฌด๊ฒฐ์ฑ (1) | 2023.03.14 |
๋คํธ์ํฌ (4๊ณ์ธต, TCP/IP, PDU, ๋ก๋๋ฐธ๋ฐ์) (0) | 2023.02.25 |
๋คํธ์ํฌ (์ฒ๋ฆฌ๋, ํ ํด๋ก์ง, ๋ณ๋ชฉํ์) (0) | 2023.02.25 |
HTTP์ IP์ฃผ์ (0) | 2023.02.24 |