Data Structure๐งถ5 ์์ ์ ๋ ฌ Topological Sort ์์ ์ ๋ ฌ ์์์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ (์์ : incoming edge) ์ผ์ ์์๋ฅผ ์ ํ ํ์๊ฐ ์์๋ ๋ง์ด ์ฐ์ธ๋ค. ์์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ํน์ง DAG(direct acycle graph)์์ ๊ฐ๋ฅํ ์ ๋ ฌ ๋ฐฉ๋ฒ์ด๋ค. ์ฌ์ดํด์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์์ ์ ๋ ฌ ์ํ ํ ์ ์๋ค. ์์กด์ฑ์ด ์๋ ๋ ธ๋๋ถํฐ ํ๋์ฉ ์ฐจ๋ก๋๋ก ์ฒ๋ฆฌํ์ฌ ์์กด์ฑ ๋์ ์์ผ๋ก ์ฒ๋ฆฌํ๋ค. * ์๊ฐ ๋ณต์ก๋ O(V+E) ์์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์์ ๊ฐ vertex์ ์์(incoming edge์)๋ฅผ ์ ์ฅํ๋ค. ์์์ด 0์ธ ๋ ธ๋๋ค์ ๋ํด ๋ชจ๋ queue์ ๋ฃ๋๋ค. queue์์ node๋ฅผ ๊บผ๋ด ์์ ์ ๋ ฌ์ ๋ฃ์ด์ค๋ค. ์์ ์ ๋ณด๋ฅผ ํ๋ ๋ฎ์ถ๊ณ ์ฃ์ง๋ฅผ ์์ค๋ค. ์์์ด 0์ด ๋ ๋ ธ๋๋ค์ ํ์ ์ ์ฅํ๋ค. ๋ฐ๋ณต ์๊ณ ๋ฆฌ์ฆ ์์ ์์ ๊ทธ๋ํ๊ฐ ์ด๋ ๊ฒ ๋์ด .. 2021. 6. 13. ๊ทธ๋ํ ์ด๋ก - DFS์ BFS ์ ํ ๊ตฌ์กฐ๊ฐ ์๋ ๋น์ ํ ๊ตฌ์กฐ ํ์ ์ํด์ ๊น์ด ์ฐ์ ํ์(DFS)๊ณผ ๋๋น ์ฐ์ ํ์(BFS)์ ์ฌ์ฉํ๋ค. ๋๋น ์ฐ์ ํ์์ ๋ธ๋ฃจํธ ํฌ์ค์ ๊ด๋ จ์ด ๊น๊ณ ๊น์ด ์ฐ์ ํ์์ ๋ฐฑํธ๋ํน๊ณผ ๊ด๋ จ์ด ๊น๋ค. DFS ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ๋ฐฉ๋ฌธ ๋งํ ์ ์ ์ ๋๋ฌํ์ง ์๋ ํ ๋ค๋ก ๋์๊ฐ์ง ์๋๋ค ์ฆ ๋ ๋ฐ๋ผ๊ฐ ๊ฐ์ ์ด ์์ ๊ฒฝ์ฐ ์ด์ ์ผ๋ก ๋์๊ฐ๋ค. ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ง๊ธ๊น์ง ๊ฑฐ์ณ ์จ ์ ์ ๋ชจ๋ ์ ์ฅ ํด ๋ฌ์ผ ํ๋๋ฐ ์ฌ๊ท ํธ์ถ ์ด์ฉํ๋ฉด ์ด ๊ฐ์ ์ผ์ ๊ฐ๋จํ๊ฒ ํ ์ ์๋ค. ์ฌ๊ท ํธ์ถํ ํจ์๊ฐ ์ข ๋ฃํ๋ฉด ํธ์ถํ ์์น๋ก ๋ค์ ๋์๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค. DFS ํน์ง ๋ฐฉ๋ฌธํ ์ ์ ์ ์์์ผ ํ๋ค. ๋ฐ๋ผ์ ๊ฐ ์ ์ ์ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ๊ฐ ํ์ ๋์ด์ ๋ฐฉ๋ฌธํ ์ ์ ์ด ์์ผ๋ฉด ์ด์ ์ ์ ์ผ๋ก ๋์๊ฐ์ผ ํ๋ค -> ์ฌ๊ท, stack ์ด์ฉ ๊ทธ๋.. 2021. 4. 21. LCS ์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด DP ๐์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด ์ด๋? (LCS, Longest Common Subsequence) ๋๊ฐ์ ๋ฌธ์์ด์ด ์ฃผ์ด์ก์ ๋ ๊ณตํต์ผ๋ก ๋ค์ด ์๋ ๋ถ๋ถ ์์ด ์ค ๊ฐ์ฅ ๊ธด ์์ด์ ๋งํ๋ค. ์๋ฅผ ๋ค์ด ABCDE์ ACDFG์ด ์ฃผ์ด์ก๋ค๋ฉด ๋ ๋ฌธ์์ด์ ๊ณตํต ๋ถ๋ถ ์์ด์ {A}, {C}, {D}, {AC}, {AD}, {ACD} ์ด๊ณ LCS๋ ๋ฐ๋ก {ACD}๋ฅผ ๋งํ๋ค. - LCS์ LCS (์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด๊ณผ ์ต์ฅ ๊ณตํต ๋ถ๋ถ ๋ฌธ์์ด) ์ฌ์ค LCS๋ ๋ป์ด ๋๊ฐ์ง๋ค ..! LCS( Longest Common Subsequence) ์ด ์๊ณ ์ต์ฅ ๊ณตํต ๋ถ๋ถ ๋ฌธ์์ดLCS( Longest Common Substring) ์ด ์๋ค. ์ ๋ ๋ฌธ์์ด ABCDE์ ACDFG์ ๋ํด์ ์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด๋ {ACD}์ง๋ง ์ต์ฅ ๊ณตํต .. 2021. 3. 1. ๊ทธ๋ํ ์ด๋ก - ์ด๋ถ ๊ทธ๋ํ ๐์ด๋ถ ๊ทธ๋ํ๋ ? ์ธ์ ํ ์ ์ ๋ผ๋ฆฌ ์๋ก ๋ค๋ฅธ ์์ผ๋ก ์น ํด์ ๋ชจ๋ ์ ์ ์ ๋๊ฐ์ง ์์ผ๋ก๋ง ์น ํ ์ ์๋ ๊ทธ๋ํ ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ์ด ๋ ๊ทธ๋ฃน์ผ๋ก ๋๋ ์ง๊ณ ์๋ก ๋ค๋ฅธ ๊ทธ๋ฃน์ ์ ์ ์ด ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด์ ธ ์๋ ๊ทธ๋ํ โฟ์ด๋ถ ๊ทธ๋ํ ํน์ง ์ด๋ถ ๊ทธ๋ํ์ธ์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ BFS, DFS ํ์์ ์ด์ฉํ๋ฉด ๋๋ค. ์ด๋ถ ๊ทธ๋ํ๋ BFS๋ฅผ ํ ๋ ๊ฐ์ ๋ ๋ฒจ์ ์ ์ ๋ผ๋ฆฌ๋ ๋ฌด์กฐ๊ฑด ๊ฐ์ ์์ผ๋ก ์น ํด์ง๋ค. ์ฐ๊ฒฐ ์ฑ๋ถ์ ๊ฐ์(Connected Component)๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ๊ณผ ์ ์ฌํ๋ค. ๋ชจ๋ ์ ์ ์ ๋ฐฉ๋ฌธํ๋ฉฐ ๊ฐ์ ์ ๊ฒ์ฌํ๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๋ O(V+E)๋ก ๊ทธ๋ํ ํ์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ฐ๋ค. โ๏ธ์ด๋ถ ๊ทธ๋ํ ํ๋ณ ์๊ณ ๋ฆฌ์ฆ ์๋ก ์ธ์ ํ ์ ์ ์ด ๊ฐ์ ์์ด๋ฉด ์ด๋ถ ๊ทธ๋ํ๊ฐ ์๋๋ค. BFS, DFS ๋ก ํ์ํ๋ฉด์ ์ ์ ๋ฐฉ๋ฌธ ํ ๋๋ง๋ค ๋.. 2021. 2. 25. ์ ๋ ฌ - ์ ํ, ๋ฒ๋ธ, ์ฝ์ , ๋ณํฉ, ํ, ํต 1. ์ ํ ์ ๋ ฌ(Selection sort) -> O(n^2) ์ ๋ํด i = 0 k= n -1, min ๊ฐ์ ์ฐพ์ i ์๋ฆฌ์ swap ๋ง์ง๋ง ์ธ๋ฑ์ค๊น์ง ๋๋ฉด์ ๋น๊ต ์ฝ๋ : void selectionSort(int arr[], int size){ int minIndex; int i, j; for(int i = 0; i O(n^2) ํ์ฌ ๋ฐฐ์ด ์์์ ๋ค์ ๋ฐฐ์ด ์์๋ฅผ ๋น๊ตํ๊ณ ๊ตํํ๋ ์์ ์ ๋ ฌ ์ฝ๋ :.. 2021. 2. 19. ์ด์ 1 ๋ค์