๐ ํ์ด๋ฅผ ํ๋ ๋ง์ง๋ง ์๊ฐ์ด์ ์ค์ ํ๋ก์ ํธ๋ฅผ ๋ค์ด๊ฐ๊ธฐ ์ ๋ง์ง๋ง ํ์ต ๋จ๊ณ์ธ ๋งํผ ์ด์ฌํํด์ผ ๊ฒ ๋ค. ๋ํ, ๋ด์ผ์ CRUD๋ฅผ ์ง์ ๋ง๋ค๊ฒ ๋๋๋ฐ REACT ํ์ต์ ์ฒ์ ์์ํ๋ Section2์์ ์ด๋ฏธ ํ๋ฒ ์คํฐ๋์๋ค๊ณผ ํจ๊ป ๊ฐ์๋ง์ CRUD๋ฅผ ์ ๋ก๋ถํฐ ํด๋ดค๊ธฐ ๋๋ฌธ์ ๊ฑฑ์ ๋ณด๋จ ์ด๋ค๊ฒ์ ๋ง๋ค๋ฉด ์ข์๊น(?)์ ๋ํ ๊ณ ๋ฏผ์ด ๋๋ ๋ ์ด๋ค. '์คํฐ๋ํ์'๋ผ๋ ํ๋ก์ ํธ๋ฅผ ์คํฐ๋์ ๋๋ช ๊ณผ ๊ฐ์ด ์งํ์ ํ๋๋ฐ ๋ฌด์ธ๊ฐ ๋ฏฟ๊ณ ๋ฐ๋ผ์์ค ๋งํผ ์์ ๋ณด๋ต์ ํ๊ณ ์ถ๋ค!!
๐ ์ค๋ ํ์ตํ ๋ด์ฉ
Tree
- ๋จ๋ฐฉํฅ ๊ทธ๋ํ์ ํ ๊ตฌ์กฐ๋ก, ํ๋์ ๋ฟ๋ฆฌ๋ก๋ถํฐ ๊ฐ์ง๊ฐ ์ฌ๋ฐฉ์ผ๋ก ๋ป์ ํํ์ ๊ตฌ์กฐ
- ํ๋ ์ด์์ ๋ฐ์ดํฐ์ ํ ๊ฐ์ ๊ฒฝ๋ก์ ํ๋์ ๋ฐฉํฅ์ผ๋ก๋ง ์ฐ๊ฒฐ๋ ๊ณ์ธต์ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
- ์๋๋ก๋ง ๋ป์ด๋๊ฐ๊ธฐ ๋๋ฌธ์ ์์ ๋ ธ๋์์ ์ถ๋ฐํ์ฌ ๋ค์ ์ถ๋ฐ ๋ ธ๋๋ก ๋์์ค๋ ์ฌ์ดํด์ด ์๋ค.
Tree์ ๊ตฌ์กฐ
- ๋ฃจํธ(Root): ํ๋์ ๊ผญ์ง์ ๋ฐ์ดํฐ ์์ ๋ ธ๋์ด๋ฉฐ ์ฌ๋ฌ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ (edge)์ผ๋ก ์ฐ๊ฒฐํ๋ค.
- ๋ ธ๋(Node): ๋ฐ์ดํฐ์ด๋ฉฐ ๋ ๊ฐ์ ๋ ธ๋๊ฐ ์ํ ๊ณ์ธต์ผ๋ก ์ฐ๊ฒฐ๋๋ฉด ๋ถ๋ชจ/์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ค.
- ๊น์ด(depth): ๋ฃจํธ๋ก๋ถํฐ ํ์ ๊ณ์ธต์ ํน์ ๋ ธ๋๊น์ง์ ๊น์ด๋ฅผ ํํํ ์ ์๋ค.
- ๋ ๋ฒจ(Level): ๊ฐ์ ๊น์ด๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ ธ๋๋ฅผ ๋ฌถ์ด์ ๋ ๋ฒจ์ด๋ผ๊ณ ํ๋ค. ๊ฐ์ ๋ ๋ฒจ์ ๋๋ํ ์๋ ๋ ธ๋๋ฅผ ํ์ ๋ ธ๋๋ผ๊ณ ํ๋ค.
- ๋์ด(height): ๋ฆฌํ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฃจํธ๊น์ง์ ๋์ด๋ฅผ ํํํ ์ ์๋ค.
- ์๋ธ ํธ๋ฆฌ(Sub tree): ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ ์์ ํธ๋ฆฌ๋ฅผ ์๋ธ ํธ๋ฆฌ๋ผ๊ณ ํ๋ค.
- ๋ฆฌํ(Leaf): ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋ ์ง์ ์ด๊ณ , ์์ ๋ ธ๋๊ฐ ์๋ ๋ ธ๋์ด๋ค.
Tree์ ์ค์ฌ์ฉ
- ์ปดํจํฐ์ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ, ์๋์ปต ํ ๋๋จผํธ ๋์งํ, ๊ฐ๊ณ๋(์กฑ๋ณด), ์กฐ์ง๋ ๋ฑ์ด ์๋ค.
์ด์ง ํธ๋ฆฌ(Binary tree)
- ์์ ๋ ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ธ ๋ ธ๋๋ค๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ์ด๋ค.
- ์๋ฃ์ ์ฝ์ , ์ญ์ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ ์ด์ง ํธ๋ฆฌ(Full binary tree), ์์ ์ด์ง ํธ๋ฆฌ(Complete binery tree), ํฌํ ์ด์ง ํธ๋ฆฌ(Perfect binary tree)๋ก ๋๋๋ค.
์ด์ง ํธ๋ฆฌ ํน์ง
- ์ ์ด์ง ํธ๋ฆฌ(Full binary tree): ๊ฐ ๋ ธ๋๊ฐ 0๊ฐ ํน์ 2๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ๋๋ค.
- ํฌํ ์ด์ง ํธ๋ฆฌ(Perfect binary tree): ์ ์ด์ง ํธ๋ฆฌ์ด๋ฉด์ ์์ ์ด์ง ํธ๋ฆฌ์ธ ๊ฒฝ์ฐ์ด๋ค. ๋ชจ๋ ๋ฆฌํ ๋ ธ๋์ ๋ ๋ฒจ์ด ๋์ผํ๊ณ , ๋ชจ๋ ๋ ๋ฒจ์ด ๊ฐ๋ ์ฑ์์ ธ ์๋ ํธ๋ฆฌ์ด๋ค.
- ์์ ์ด์ง ํธ๋ฆฌ(Complete binary tree): ๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ ๋ชจ๋ ๋ ธ๋๊ฐ ๊ฐ๋ ์ฐจ ์์ด์ผ ํ๊ณ , ๋ง์ง๋ง ๋ ๋ฒจ์ ๋ ธ๋๋ ์ ๋ถ ์ฐจ ์์ง ์์๋ ๋์ง๋ง ์ผ์ชฝ์ด ์ฑ์์ ธ์ผ ํ๋ค.
์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)
- ์ด์ง ํ์๊ณผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๊ฒฐํฉํ ํธ๋ฆฌ์ด๋ค.
- ์ด์ง ํ์์ ํจ์จ์ ์ธ ํ์ ๋ฅ๋ ฅ์ ์ ์งํ๋ฉด์ ๋น๋ฒํ ์๋ฃ ์ ๋ ฅ๊ณผ ์ญ์ ๋ฅผ ๊ฐ๋ฅํ๊ฒ๋ ๊ณ ์๋๋ค.
์ด์ง ํ์ ํธ๋ฆฌ ํน์ง
- ๊ฐ ๋ ธ๋์ ์ค๋ณต๋์ง ์๋ ํค๊ฐ ์๋ค.
- ๋ฃจํธ๋ ธ๋์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๋ ํด๋น ๋ ธ๋์ ํค๋ณด๋ค ์์ ํค๋ฅผ ๊ฐ๋ ๋ ธ๋๋ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- ๋ฃจํธ๋ ธ๋์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ ํด๋น ๋ ธ๋์ ํค๋ณด๋ค ํฐ ํค๋ฅผ ๊ฐ๋ ๋ ธ๋๋ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- ์ข์ฐ ์๋ธํธ๋ฆฌ๋ ๋ชจ๋ ์ด์ง ํ์ ํธ๋ฆฌ์ด๋ค.
์ด์ง ํ์ ํธ๋ฆฌ ํ์ ๊ณผ์
- ๋ฃจํธ ๋ ธ๋์ ํค์ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ ๋น๊ตํ๋ค. ๋ง์ฝ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด๋ผ๋ฉด ํ์์ ์ข ๋ฃํ๋ค.
- ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด ๋ฃจํธ ๋ ธ๋์ ํค๋ณด๋ค ์๋ค๋ฉด ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๋ก ํ์์ ์งํํ๋ค.
- ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด ๋ฃจํธ ๋ ธ๋์ ํค๋ณด๋ค ํฌ๋ค๋ฉด ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ก ํ์์ ์งํํ๋ค.
ํธ๋ฆฌ๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ
- ์ ์ ์ํ(preorder traverse)
- ๊ฐ์ฅ ๋จผ์ ๋ฐฉ๋ฌธํ๋ ๋ ธ๋๋ ๋ฃจํธ์ด๋ฉฐ, ๋ฃจํธ์์ ์์ํด ์ผ์ชฝ์ ๋ ธ๋๋ค์ ์์ฐจ์ ์ผ๋ก ๋๋ฌ๋ณธ ๋ค, ์ผ์ชฝ์ ๋ ธ๋ ํ์์ด ๋๋๋ฉด ์ค๋ฅธ์ชฝ ๋ ธ๋๋ฅผ ํ์ํ๋ค. ๋ถ๋ชจ ๋ ธ๋๊ฐ ์ ์ผ ๋จผ์ ๋ฐฉ๋ฌธ๋๋ ์ํ ๋ฐฉ์์ด๋ค.
- ์ฃผ๋ก ๋ถ๋ชจ ๋ ธ๋๊ฐ ๋จผ์ ์์ฑ๋์ด์ผ ํ๋ ํธ๋ฆฌ๋ฅผ ๋ณต์ฌํ ๋ ์ฌ์ฉํ๊ฒ ๋๋ค.
- ์ค์ ์ํ(inorder traverse)
- ๋ฃจํธ๋ฅผ ๊ฐ์ด๋ฐ์ ๋๊ณ ์ํํ๋ค. ์ ์ผ ์ผ์ชฝ ๋์ ์๋ ๋ ธ๋๋ถํฐ ์ํํ๊ธฐ ์์ํ๋ฉฐ, ๋ฃจํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์ ์๋ ๋ ธ๋์ ์ํ๊ฐ ๋๋๋ฉด ๋ฃจํธ๋ฅผ ๊ฑฐ์ณ ์ค๋ฅธ์ชฝ์ ์๋ ๋ ธ๋๋ก ์ด๋ํ์ฌ ๋ง์ ํ์ํ๋ค.
- ๋ถ๋ชจ ๋ ธ๋๊ฐ ์๋ธ ํธ๋ฆฌ์ ๋ฐฉ๋ฌธ ์ค๊ฐ์ ๋ฐฉ๋ฌธ๋๋ ์ํ๋ฐฉ์์ด๋ฉฐ, ์ด์ง ํ์ ํธ๋ฆฌ์ ์ค๋ฆ์ฐจ์์ผ๋ก ๊ฐ์ ๊ฐ์ ธ์ฌ ๋ ์ฐ์ธ๋ค.
- ํ์ ์ํ(postorder traverse)
- ๋ฃจํธ๋ฅผ ๊ฐ์ฅ ๋ง์ง๋ง์ ์ํํ๋ฉฐ ์ ์ผ ์ผ์ชฝ ๋์ ์๋ ๋ ธ๋๋ถํฐ ์ํํ๊ธฐ ์์ํ์ฌ, ๋ฃจํธ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํด ์ํํ ๋ค, ์ ์ผ ๋ง์ง๋ง์ ๋ฃจํธ๋ฅผ ๋ฐฉ๋ฌธํ๋ค.
- ํธ๋ฆฌ๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉํ๋ฉฐ ์์ ๋ ธ๋๊ฐ ๋จผ์ ์ญ์ ๋์ด์ผ ์์ ๋ ธ๋๋ฅผ ์ญ์ ํ ์ ์๋ค.
Graph์ ์ ์
- ์ฌ๋ฌ๊ฐ์ ์ ๋ค์ด ์๋ก ๋ณต์กํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๋ ๊ด๊ณ๋ฅผ ํํํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
Graph์ ๊ตฌ์กฐ
- ์ง์ ์ ์ธ ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ ์ ์ฌ์ด๋ฅผ ์ด์ด์ฃผ๋ ์ ์ด ์๋ค.
- ๊ฐ์ ์ ์ธ ๊ด๊ณ๋ผ๋ฉด ๋ช ๊ฐ์ ์ ๊ณผ ์ ์ ๊ฑธ์ณ ์ด์ด์ง๋ค.
- ํ๋์ ์ ์ ๊ทธ๋ํ์์๋ ์ ์ (vertex)์ด๋ผ๊ณ ํํํ๊ณ , ํ๋์ ์ ์ ๊ฐ์ (edge)๋ผ๊ณ ํ๋ค.
Graph์ ํํ ๋ฐฉ์
- ์ธ์ ํ๋ ฌ
- ๋ ์ ์ ์ ๋ฐ๋ก ์ด์ด์ฃผ๋ ๊ฐ์ ์ด ์๋ค๋ฉด ์ด ๋ ์ ์ ์ ์ธ์ ํ๋ค๊ณ ํ๋ฉฐ, ์ธ์ ํ๋ ฌ์ ์๋ก ๋ค๋ฅธ ์ ์ ๋ค์ด ์ธ์ ํ ์ํ์ธ์ง๋ฅผ ํ์ํ ํ๋ ฌ๋ก 2์ฐจ์ ๋ฐฐ์ด์ ํํ๋ก ๋ํ๋ธ๋ค.
- ์ธ์ ๋ฆฌ์คํธ
- ๊ฐ ์ ์ ์ด ์ด๋ค ์ ์ ๊ณผ ์ธ์ ํ๋์ง๋ฅผ ๋ฆฌ์คํธ์ ํํ๋ก ํํํ๋ฉฐ, ๊ฐ ์ ์ ๋ง๋ค ํ๋์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ์ด ๋ฆฌ์คํธ๋ ์์ ๊ณผ ์ธ์ ํ ๋ค๋ฅธ ์ ์ ์ ๋ด๊ณ ์๋ค.
Graph์ ์ค์ฌ์ฉ ์์
- ํฌํธ ์ฌ์ดํธ์ ๊ฒ์ ์์ง, SNS์์ ์ฌ๋๋ค๊ณผ์ ๊ด๊ณ, ๋ด๋น๊ฒ์ด์ ๋ฑ์์ ์ฌ์ฉํ๊ณ ์๋ค.
BFS(Breadth-First Search)
- ๋๋น๋ฅผ ์ฐ์ ์ ์ผ๋ก ํ์ํ๋ ๋ฐฉ๋ฒ์ด๋ฉฐ, ๋๋น ์ฐ์ ํ์์ด๋ผ๊ณ ํ๋ค.
- ์ฃผ๋ก ๋ ์ ์ ์ฌ์ด์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ๋ ์ฌ์ฉํ๋ค. ๋ง์ฝ, ๊ฒฝ๋ก๋ฅผ ํ๋์ฉ ์ ๋ถ ๋ฐฉ๋ฌธํ๋ค๋ฉด, ์ต์ ์ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ๋ค ์ดํด๋ณด์์ผ ํ๋ค.
DFS(Depth First Search)
- ๊น์ด๋ฅผ ์ฐ์ ์ ์ผ๋ก ํ์ํ๋ ๋ฐฉ๋ฒ์ด๋ฉฐ, ๊น์ด ์ฐ์ ํ์์ด๋ผ๊ณ ํ๋ค.
- ํ ์ ์ ์์ ์์ํด์ ๋ค์ ๊ฒฝ๋ก๋ก ๋์ด๊ฐ๊ธฐ ์ ์ ํด๋น ๊ฒฝ๋ก๋ฅผ ์๋ฒฝํ๊ฒ ํ์ํ ๋ ์ฌ์ฉ ํ๋ค.
- BFS๋ณด๋ค ํ์ ์๊ฐ์ ์กฐ๊ธ ์ค๋ ๊ฑธ๋ฆด์ง๋ผ๋ ๋ชจ๋ ๋ ธ๋๋ฅผ ์์ ํ ํ์ํ ์ ์๋ค.
๐ ์ถ๊ฐ๋ก ๊ณต๋ถํ ๋ด์ฉ
Study์๊ณผ ํจ๊ป ์งํ์ค์ธ ํ๋ก์ ํธ ๊ตฌํ
๋๋ง์ ํฌํธํด๋ฆฌ์ค ์ฌ์ดํธ ๊ตฌํ ํด๋ณด๊ธฐ
pre-project ๊ด๋ จ ์ฌ์ดํธ ์ฐพ์๋ณด๊ธฐ
๐ ์ค์ํ ๋ด์ฉ
- ํธ๋ฆฌ
- ์ด์ง ํธ๋ฆฌ
- ๊ทธ๋ํ
- BFS
- DFS
'Daily > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
22.08.18_TIL (0) | 2022.08.18 |
---|---|
22.08.17_TIL (2) | 2022.08.17 |
22.08.12_TIL (0) | 2022.08.12 |
22.08.11_TIL (0) | 2022.08.10 |
22.08.10_TIL (0) | 2022.08.09 |