"์ด์งํธ๋ฆฌ๋ ์ต์์ ๋
ธ๋๋ฅผ ๋ฃจํธ๋
ธ๋๋ผ ๋ถ๋ฅด๊ณ ํ๋์ ๋
ธ๋๊ฐ ์ต๋ 2๊ฐ์ ์์๋
ธ๋๋ฅผ ๊ฐ์ง๋ ํธ๋ฆฌํํ์ ์๋ฃ๊ตฌ์กฐ์ด๋ฉฐ ํธ๋ฆฌ์ํ์ ๋ฐฉ์์ผ๋ก ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ฉฐ ํ์ํ ์ ์๋ค
์ด์งํ์ํธ๋ฆฌ๋ ๋
ธ๋์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ์๋ ๋
ธ๋๋ณด๋ค ์์ ๊ฐ์, ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์๋ ๋
ธ๋๋ณด๋ค ํฐ ๊ฐ์ ์ ์ฅํ๋ ์ ๋ ฌ๋ ์ด์งํธ๋ฆฌ์ด๋ค. ํน์ ๊ฐ์ ๊ฒ์ํ ๋ ํ์ํ ๊ฒฝ์ฐ์ ์๊ฐ ๋ฐ์ฉ ์ค์ด๋ค์ด ์๋๊ฐ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์์ผ๋ฉฐ ์ฝ์
๊ณผ ์ญ์ ์์๋ ํด๋น ๊ฐ์ด๋ ํด๋น๊ฐ์ด ๋ค์ด๊ฐ ์์น๋ฅผ ๊ฒ์ํ๊ธฐ๋ง ํ๋ฉด ๋์ด ๊ฒ์๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก O(logN)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค"
Binary Tree
ํธ๋ฆฌํํ์ ์๋ฃ๊ตฌ์กฐ๋ก ๋น๊ต ๊ฐ๋ฅํ ์๋ฃ๋ฅผ ์ ๋ฆฌํ๋ ๋ฐ ์ฐ์
k๊ฐ 2์ธ ์ ๋ ฌ K-ํญ ํธ๋ฆฌ์ ํน์ํ ๊ฒฝ์ฐ๋ค
๊ฐ๊ฐ์ ์๋ฃ๋ ๋
ธ๋(node, ๋ถ๊ธฐ์ )
์ ์ ์ฅ
๋
ธ๋๋ ์ต๋ ๋ ๊ฐ(์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ)์ ์์ ๋
ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ค
์ด์งํธ๋ฆฌ์์๋ ํธ๋ฆฌ์ํ๋ก ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ์ ์๋ค
๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ๊ณ ๋ชจ๋ ๋ ๋ฒจ์ด ์ฑ์์ ธ์๋ค (ํฌํ์ด์งํธ๋ฆฌ)
๋ง์ง๋ง ๋ ๋ฒจ์ ์ฑ์ธ ๋ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ ์์ผ๋ก ๋
ธ๋๋ฅผ ์ฑ์ด๋ค
โก๏ธ ํ(ํํธ๋ฆฌ)
์ ๋ฒ ์ด์ค
์ฐ์ ์์ ํ
๋ฅผ ๊ตฌํํ๊ฑฐ๋ ํ์ ๋ ฌ์ ๋ง๋ค ์ ์๋ค
์ด์ง ํ: ํ์ ์ข
๋ฅ ์ค ํ๋๋ก ์์ ๋
ธ๋์ ์๊ฐ ์ต๋ 2๊ฐ์ธ ํ
๋ฐฐ์ด๋ก ํํํ๊ธฐ ์ข์ ๊ตฌ์กฐ- ๋ญ๋น์์ด ๋ฐฐ์น๊ฐ๋ฅ
๋ชจ๋ ๋ ธ๋๊ฐ 0๋๋ 2๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง
์ด์งํ์ํธ๋ฆฌ๋ ์ ๋ ฌ๋ ์ด์งํธ๋ฆฌ๋ก ๋ ธ๋์ ์ผ์ชฝ ํ์ ํธ๋ฆฌ์๋ ๋ ธ๋๋ณด๋ค ์์ ๊ฐ์ด ๋ค์ด๊ฐ๊ณ ์ค๋ฅธ์ชฝ ํ์ ํธ๋ฆฌ์๋ ๋ ธ๋๋ณด๋ค ํฐ ๊ฐ์ด ๋ค์ด๊ฐ๋ ํํ
โก๏ธ ์ด๋ฌํ ํํ๋๋ฌธ์ ํน์ ๊ฐ์ ๊ฒ์ํ ๋ ํ์ํ ๊ฒฝ์ฐ์ ์๊ฐ ๋ฐ์ฉ ์ค์ด๋ค์ด ์๋๊ฐ ๋น ๋ฅด๋ค
์ด๋ ์ด์ ๋ค๋ฅด๊ฒ ๋งํฌ๋๋ฆฌ์คํธ์ฒ๋ผ ์ฐธ์กฐ์ ์ํด ์ ๋ ฌ๋์ด ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ๋น ๋ฅด๋ค
์ค๋ณต๋ ธ๋๋ฅผ ๊ฐ์ง์ง ์๋๋ค(๋ ธ๋์ ํค๋ ์ ์ผํ๋ค)
https://muckycode.blogspot.com/2015/01/binary-search-treebst.html
https://code-lab1.tistory.com/8
์ด์ง ํ์ ํธ๋ฆฌ์์์ ๊ฒ์ ์๊ฐ๋ณต์ก๋๋ ํธ๋ฆฌ์ ๋์ด
์กฐํ, ์ฝ์
, ์ญ์ ๋ชจ๋
Balanced Tree(๊ท ํ์กํ ์ด์งํธ๋ฆฌ)
์ด์ง ํ์ ํธ๋ฆฌ์ ๋ฌธ์ ์ ์ ๋ณด์ํ BST
B-Tree์ ๊ฐ ๋ ธ๋๋ ๋์คํฌ์ ๋ธ๋ก๊ณผ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋ ธ๋ ํ๋๋ฅผ ์ ๊ทผํ๋ ๊ฒ์ ๋์คํฌ๋ฅผ ํ๋ฒ ๋ ์ ๊ทผํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ณด๋ค ์ ์ ์์ ๋ ธ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์์ธ๊ตฌ์กฐ์ ์ฑ๋ฅ์ ๋์ผ ์ ์๋ค. ์์ฑ๋๋ ๋ ธ๋์ ์๋ฅผ ์ค์ด๊ธฐ ์ํด B-Tree์ ๋ณํ์ผ๋ก B* ํธ๋ฆฌ๊ฐ ๋์ค๊ฒ ๋์๋ค.
*B-Tree๋ Balanced Tree(๊ท ํ์กํ ์ด์งํธ๋ฆฌ)๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ํ์ผ์์คํ ์ ๋๋ฆฌ ์ฐ์ด๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ์ค์ค๋ก ๊ท ํ์ ์ ์งํจ
์ต๋, ์ต์๊ฐ๋ง์ ์ฐพ๊ณ ์ ํ๋ค๋ฉด Heap, ๋ชจ๋ ๊ฐ์ ์ ๋ ฌํ๊ณ ์ถ๋ค๋ฉด BST
https://yoongrammer.tistory.com/71
https://gwang920.github.io/datastructure/BST/
https://code-lab1.tistory.com/217
https://sdesigner.tistory.com/79
https://wangin9.tistory.com/entry/B-tree-B-tree
"๋ ๋-๋ธ๋ ํธ๋ฆฌ๋ ์ด์ง ํ์ ํธ๋ฆฌ์ ํน์ํ ํํ๋ก ์ด์งํ์ํธ๋ฆฌ์ ํน์ฑ์ ๊ฐ์ง๋ฉด์ ์ต์ ์ ๊ฒฝ์ฐ์๋ ์ผ์ ํ ์คํ์๊ฐ์ ๋ณด์ฅํ์ฌ ์ค์๊ฐ ์ฒ๋ฆฌ์ ๊ฐ์ ์คํ์๊ฐ์ด ์ค์ํ ๊ฒฝ์ฐ์ ์ ์ฉํ ์๋ฃ๊ตฌ์กฐ"
์๊ฐ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ
(self-balancing binary search tree)๋ก O(logN)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค
๋ ๋-๋ธ๋ ํธ๋ฆฌ์์๋ ๋ฆฌํ ๋ ธ๋๋ค์ ๋น์ด์๊ณ , ์๋ฃ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค
๋ ๋-๋ธ๋ ํธ๋ฆฌ๋ฅผ ํฌํจํ ์ด์ง ํ์ ํธ๋ฆฌ
๋, ๋ชจ๋ ๋
ธ๋์ ๋ํด '์์ ์ด ๊ฐ์ง ์๋ฃ๋ ์์ ๋ณด๋ค ์ค๋ฅธ์ชฝ์ ์์นํ ๋ถ๋ถํธ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ ์๋ฃ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๊ณ , ์์ ๋ณด๋ค ์ผ์ชฝ์ ์์นํ ๋ถ๋ถํธ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ ์๋ฃ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค'๋ผ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ค. ์ด๋ฐ ํน์ฑ ๋๋ฌธ์ ํน์ ๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ์ ๋ผ ์ ์์ผ๋ฉฐ, ๊ฐ ๊ตฌ์ฑ์์(elements)๊ฐ์ ํจ์จ์ ์ธ in-order traversal
์ด ๊ฐ๋ฅํ๋ค.
์๋ฃ์ ์ฝ์ ๊ณผ ์ญ์ , ๊ฒ์์์ ์ต์ ์ ๊ฒฝ์ฐ์๋ ์ผ์ ํ ์คํ ์๊ฐ์ ๋ณด์ฅํ๋ค(worst-case guarantees). ์ด๋ ์ค์๊ฐ ์ฒ๋ฆฌ์ ๊ฐ์ ์คํ์๊ฐ์ด ์ค์ํ ๊ฒฝ์ฐ์ ์ ์ฉ
๋ถ๊ท ํ
์ด ๋ฐ์ํ๊ณ ๋กํ
์ด์
์ ํตํด ๊ท ํ
์ ์ ์งํ๋คํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ ์ฉ
https://ko.wikipedia.org/wiki/%EB%A0%88%EB%93%9C-%EB%B8%94%EB%9E%99_%ED%8A%B8%EB%A6%AC
https://withhamit.tistory.com/282
"๋ณต์กํ ๋ฌธ์ ๋ฅผ ๊ฐ๋จํ ์ฌ๋ฌ๊ฐ์ ๋ฌธ์ ๋ก ๋๋ ํธ๋ ๊ฒ์ผ๋ก ๋ฉ๋ชจ์ด์ ์ด์
์ด๋ผ๋ ๊ฐ๋
์ ํตํด ๋์ผํ ์ฐ์ฐ์ด ๋ฐ๋ณต์ํ๋์ง ์๋๋ก ์ ์ฅํด์ ์ฌ์ฉํ๋ค. ์ด ๋ฐฉ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฝ๊ฐ ๋ ์ฌ์ฉํด์ ์ฐ์ฐ ์๋๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
DP์๋ bottom-up ๋ฐฉ์๊ณผ top-down๋ฐฉ์์ด ์๋ค bottom-up์ ๋ฐ๋ณต๋ฌธ์ ํตํด ๊ตฌํํ๋ฉฐ ์์๋ฌธ์ ์ ๋ต์ ๋์ถํด ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์ด๊ณ top-down์ ๋ฌธ์ ๋ฅผ ๋ฐ๋ณต๋๋ ์์ ๋ถ๋ถ์ผ๋ก ์ ์ฐจ ์ชผ๊ฐ์ ์ฌ๊ท๋ฅผ ํตํด ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ค."
๋ฉ๋ชจ์ด์ ์ด์ (memoization)์ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด ๋์ผํ ๊ณ์ฐ์ ๋ฐ๋ณตํด์ผ ํ ๋, ์ด์ ์ ๊ณ์ฐํ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํจ์ผ๋ก์จ ๋์ผํ ๊ณ์ฐ์ ๋ฐ๋ณต ์ํ์ ์ ๊ฑฐํ์ฌ ํ๋ก๊ทธ๋จ ์คํ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ ๊ธฐ์ ์ด๋ค.
โก๏ธ๋ฐ๋ณต ์ํ๋๋ ์ฐ์ฐ ์์ด ์ ์ฅ๋ ๊ฐ์ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ค
"DP๋ฅผ ์ด์ฉํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋๋์ 2๊ฐ์ง ์กฐ๊ฑด์ ํด๋น ๋ฌธ์ ๊ฐ ๋ถ๋ถ ๋ฐ๋ณต๋์ด ๊ตฌ์ฑ๋์ด์์ผ๋ฉด์ ์ด ๋ฌธ์ ๋ค์ ํฉ์ด ์ ์ฒด ๋ฌธ์ ์ ๋ต์ด ๋๋ ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ์ฌ์ผํ๋ค๋ ๊ฒ์ด๋ค."
https://velog.io/@gillog/%EB%8F%99%EC%A0%81-%EA%B3%84%ED%9A%8D%EB%B2%95Dynamic-Programming