๐ฟ Data
[TIL] 104. [์๋ฃ๊ตฌ์กฐ] ์ํ
ํค์๋ ์ํ(ํธ๋ฆฌ : ์ ์/์ค์/ํ์, ๊ทธ๋ํ : BFS/DFS) ์ํ(Traversal) ํธ๋ฆฌ, ๊ทธ๋ํ์ ๊ฐ์ด ์ฐ๊ฒฐ๋ ์๋ฃ๊ตฌ์กฐ์์ ๋ชจ๋ ๋ ธ๋๋ฅผ ํ ๋ฒ์ฉ ํ์ํ๋ ๊ฒ ์ํ์ ๋ชฉ์ : ๋ชจ๋ ํน์ ํน์ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๊ฒ ๋ฐฉํฅ์ ๋ฐ๋ผ ์ํํ๋ ๋ฐฉ๋ฒ์ด ๋ฌ๋ผ์ง๋ค. [์ํ] ํธ๋ฆฌ๊ตฌ์กฐ ํธ๋ฆฌ ๊ตฌ์กฐ์์์ ์ํ๋ ํฌ๊ฒ ์ ์, ์ค์, ํ์๋ก ๋๋์ด์ง๋ค. ์ ์ : 1. Root node -> 2. Left node -> 3. Right node ์ค์ : 1. Left node -> 2. Root node -> 3. Right node ํ์ : 1. Left node -> 2. Right node -> 3. Root node ๋จ์ํ๊ฒ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ด๋ฉด์ Root node์ ์์น์ ๋ฐ๋ผ ๋๋์ด์ง๋ค๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค..
[TIL] 103. [์๋ฃ๊ตฌ์กฐ] ๊ทธ๋ํ
ํค์๋ ๊ทธ๋ํ ์ธ์ ํ๋ ฌ/์ธ์ ๋ฆฌ์คํธ ๊ทธ๋ํ ๊ทธ๋ํ๋ ๊ธฐ๋ณธ์ ์ผ๋ก vert(๋ ธ๋, ์ ์ )์ edge(๊ฐ์ , ๋งํฌ)๋ก ๊ตฌ์ฑ๋์ด์๋ค. ๊ทธ๋ํ๋ ๋ ธ๋๊ฐ์ ๊ด๊ณ, ํธ๋ฆฌ๋ ๋ ธ๋๊ฐ์ ๊ณ์ธต์ ํํ ๋ฐฉํฅ์ฑ(๋จ๋ฐฉํฅ, ์๋ฐฉํฅ) ์์๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง ๋ ธ๋๊ฐ Leaf node๊ฐ ๋๋ค. ์๋ฐฉํฅ ํํ์ ๊ฒฝ์ฐ, ๊ทธ ์ฃผ๋ชฉ์ ์ด ๋ ธ๋๊ฐ์ ์ํธ ๊ตํ(์๋ก ๋ ธ๋ ์ ๋ณด๋ฅผ ๊ณต์ ) ๋ฌด๋ฐฉํฅ์ฑ ๋ฐฉํฅ์ด ์กด์ฌํ์ง ์๊ณ ์ฐ๊ฒฐ๋ ๋ ธ๋๋ค(์ด์ ๋ ธ๋๋ค)๋ผ๋ฆฌ ์๋ก ์ธ์ ์ํ์ฑ ๊ทธ๋ํ๊ฐ ๊ฐ์ง ์ ์๋ ์ฑ์ง๋ก, ์์ ๊ฐ์ด ์ํ์ ํ์ฑํ ์ ์๋ค. [๊ทธ๋ํ] ์ธ์ ๋ฆฌ์คํธ, ์ธ์ ํ๋ ฌ ๊ทธ๋ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ ์ธ์ ๋ฆฌ์คํธ ๊ทธ๋ํ์ ํํ๋ฅผ ๋ฆฌ์คํธ๋ก ํํ ์ ์ฒด ๋ ธ๋์ ๋ชฉ๋ก์ ์ ์ฅํ๊ณ ์๋ค. ํ์ด์ฌ์ ๋์ ๋๋ฆฌ๋ก ๊ทธ๋ํ๋ฅผ ๊ตฌํํ ์์) class Graph: d..
[TIL] 102. [์๋ฃ๊ตฌ์กฐ] ํด์ํ ์ด๋ธ
ํค์๋ ํด์ ํด์ํจ์ ํด์ํ ์ด๋ธ ํด์์ถฉ๋(์ฒด์ด๋, ์คํ ์ด๋๋ ์ฑ) ํด์ํ ์ด๋ธ ํค(key)๋ฅผ ํ์ฉํ์ฌ ๊ฐ(value)์ ์ง์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ๊ตฌ์กฐ ํด์ฑ์ ์ฃผ๋ ๋ชฉ์ ์ ๊ฒ์ ๋ฐ์ดํฐ์ ์๊ณผ ์๊ด์์ด ์ฑ๋ฅ์ด ๋น ๋ฅด๋ค.(ํค๋ฅผ ํตํด ๋ฐ๋ก ๊ฐ์ ๊ฒ์ํ๊ธฐ๋๋ฌธ) ํ์ด์ฌ์ ๋์ ๋๋ฆฌ๋ ๋ด๋ถ์ ์ผ๋ก ํด์ํ ์ด๋ธ ๊ตฌ์กฐ ํด์ํจ์ ํด์ํจ์๋ฅผ ํตํด ํค๋ฅผ ํด์ํ ์ด๋ธ ๋ด์ ๋ฒํท(=hashes)๋ก ๋งคํ ํด์ํจ์์ ์ ๋ ฅ๊ฐ ํํ๋ ๋ค์ํ์ง๋ง, ์ถ๋ ฅ๊ฐ์ ํํ๋ ์ซ์ ์ ๋ ฅ๊ฐ๊ณผ ์ถ๋ ฅ๊ฐ์ด ์ผ๋์ผ ๋์์ด ๋์ด์ผ ํ๋ค. ์ค์ ๋ก๋ ์๋ฒฝํ ์ผ๋์ผ ๋์์ ์ด๋ ค์ฐ๋ฉฐ, ๋ค๋ฅธ ์ ๋ ฅ๊ฐ์ ๋ํด ๊ฐ์ ์ถ๋ ฅ์ด ๋์ค๋ ๊ฒฝ์ฐ๋ฅผ ํด์์ถฉ๋์ด๋ผ๊ณ ํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ํด์ํจ์๋ ๋ฌธ์์ด ์ ๋ ฅ๊ฐ์ ์ ์ํ ์ถ๋ ฅ๊ฐ์ผ๋ก ๋ฐํ ํด์์ฑ๋ฅ O(1) ์๊ฐ๋ณต์ก๋ ์์ ๊ฒ์, ์ฝ์ , ์ญ์ ๋ฅผ ํ ์ ์๋ค.(ํด..
[CS] ์ค๋ฒํค๋, ์คํ ์ค๋ฒ ํ๋ก์ฐ
์ค๋ฒํค๋(OverHead) ์ด๋ค ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด ๋ค์ด๊ฐ๋ ๊ฐ์ ์ ์ธ ์ฒ๋ฆฌ ์๊ฐ ํน์ ๋ฉ๋ชจ๋ฆฌ ๋ฑ A๋ผ๋ ์์ ์ ๋จ์ ์ฒ๋ฆฌํ๋ ์๊ฐ์ด 10์ด์ผ ๋, ์์ ์ฑ์ ๊ณ ๋ คํ์ฌ B๋ผ๋ ์์ ์ ์ถ๊ฐํ์ฌ ์ด 15์ด๊ฐ ๊ฑธ๋ ธ๋ค๋ฉด ์ด ๋์ `overhead = 5์ด` ์์ B๋ฅผ ๊ฐ์ ํ์ฌ ์ด 12์ด๊ฐ ๋์๋ค๋ฉด `overhead๊ฐ 3์ด ๋จ์ถ๋์๋ค`๊ณ ํ๋ค. ์คํ ์ค๋ฒ ํ๋ก์ฐ(Stack Overflow) ์คํ ๋ฉ๋ชจ๋ฆฌ : Stack ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ณดํต์ ์ง์ญ ๋ณ์๊ฐ ์ ์ฅ๋๋ ๋ฉ๋ชจ๋ฆฌ(ํจ์์์ ์ ์ธ ํ ํ ๋น, ํจ์๋ฅผ ๋น ์ ธ๋์ค๋ฉด ํด์ ) ์คํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ ์๋ฌ๋ฅผ ์คํ์ค๋ฒํ๋ก์ฐ๋ผ๊ณ ํ๋ค. python์์ ๊ธฐ๋ณธ์ ์ผ๋ก 1000๋งํผ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น
[TIL] 101. [๋ถํ ์ ๋ณต, ์ ๋ ฌ] ํต ์ ๋ ฌ, ๋ณํฉ ์ ๋ ฌ
ํค์๋ ๋ถํ ์ ๋ณต ํต ์ ๋ ฌ ๋ณํฉ ์ ๋ ฌ ๋ถํ ์ ๋ณต ๋ณต์กํ๊ฑฐ๋ ํฐ ๋ฌธ์ ๋ฅผ ์์ ํ์ ๋ฌธ์ ๋ก ๋๋์ด ํธ๋ ๋ฐฉ๋ฒ ๋ฌธ์ ๋ฅผ ๋๋์ด ๋ณ๋ ฌ์ ์ผ๋ก ํด๊ฒฐ ๊ฐ๋ฅ(๋จ, ๋ฌธ์ ํด๊ฒฐ์ ์ํด ํจ์๊ฐ ์ฌ๊ท์ ์ผ๋ก ํธ์ถ๋ ์ ์์ผ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ฆ๊ฐ) ๋ถํ (Divide) : ๋ฌธ์ ๋ฅผ ์๊ฒ ์๊ฒ ๋๋๋ ๊ณผ์ ์ ๋ณต(Conquer) : ์๊ฒ ๋๋ ๋ฌธ์ ๋ฅผ ํ๋์ฉ return ํ์ฌ ์ ๋ณต(ํน์ ๊ฐ์ ๋์ถ) ๋จผ์ Divide๋ฅผ ํ ํ ๊ทธ์ ์ญ์์ผ๋ก ์์ ๋ฌธ์ ๋ถํฐ ํ๋ํ๋ ์ ๋ณตํด์ ์ต์ข ๊ฒฐ๊ณผ๊ฐ์ ๋์ถ ๋จ, ๊ณผ์ฐ ์ด ๋ฌธ์ ๋ฅผ ๋ถํ ์ ๋ณต์ผ๋ก ํด๊ฒฐํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ธ ๊ฒ์ด๋ ์๊ฐํด๋ณผ ํ์๊ฐ ์๋ค! ์๋๋ ์ฌ๊ท์ ๋ถํ ์ ๋ณต์ ์ฐจ์ด(๋ถํ ์ ๋ณต์ ๋ณดํต ์ฌ๊ทํจ์๋ฅผ ํ์ฉ) [์ ๋ ฌ, ๋ถํ ์ ๋ณต] ํต ์ ๋ ฌ(Quick Sort) ํผ๋ฒ(pivot)์ด๋ผ๋ ๊ฐ์ ํน์ ์ง์ด์ฃผ๊ณ (๋ณด..