์ฝ๋ฉ ํ ์คํธ ์ค๋น(22)
-
[์๊ณ ๋ฆฌ์ฆ] Dynamic Programming(๋์ ๊ณํ๋ฒ)& Divide and Conquer(๋ถํ ์ ๋ณต)
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. ์ค๋์ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ณ ๋ฆฌ์ฆ์์ ๋์ ๊ณํ๋ฒ๊ณผ ๋ถํ ์ ๋ณต์ ๋ํด ๊ณต๋ถ ํด ๋ณด๋๋ก ํ๋ ๊ฒ์ด์์. ์์ค ์ฝ๋์ ๋ํด์ ํ์ธ ํ๊ณ ์ถ์ผ์ ๋ถ๋ค๊ป์๋ ์ฃผ๋ํ๋์ Git hub์ ๊ด์ฌ์ ์ฃผ์ธ์! ๐ ๊ฐ์ ๐๋์ ๊ณํ๋ฒ์ด๋? Dynamic Programming์ ์ค์ฌ์ DP๋ผ๊ณ ๋ง์ด ๋ถ๋ฅธ๋ค๊ณ ํด์! ๋์ ๊ณํ๋ฒ์ ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ ๋ค, ํด๋น ๋ถ๋ถ ๋ฌธ์ ์ ํด(๋ต)์ ํ์ฉํ์ฌ ๋ณด๋ค ํฐ ํฌ๊ธฐ์ ๋ถ๋ถ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํจ์ผ๋ก, ์ต์ ์ ์ผ๋ก ์ ์ฒด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ธ ๊ฒ์ด์์. ๋์ ๊ณํ๋ฒ์ ์ํฅ์ ์ ๊ทผ๋ฒ์ผ๋ก, ๊ฐ์ฅ ์ตํ์ ํด๋ต์ ๊ตฌํ ๋ค, ์ด๋ฅผ ์ ์ฅํ๊ณ , ํด๋น ๊ฒฐ๊ณผ๊ฐ์ ์ด์ฉํ์ฌ ์์ ๋ฌธ์ ๋ฅผ ํ์ด๊ฐ๋ ๊ฒ์ด์์. ๋ํ, ๋ฌธ์ ๋ฅผ ์๊ฒ ์ชผ๊ฐค ๋, ๋ถ๋ถ ๋ฌธ์ ๋ ์ค๋ณต์ด ๋๊ธฐ..
2021.09.09 -
[์๊ณ ๋ฆฌ์ฆ] 02. ์ ํ ์ ๋ ฌ
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. ์ค๋์ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ณ ๋ฆฌ์ฆ์์ Selection Sort์ ๋ํด ๊ณต๋ถ ํด ๋ณด๋๋ก ํ๋ ๊ฒ์ด์์. ์์ค ์ฝ๋์ ๋ํด์ ํ์ธ ํ๊ณ ์ถ์ผ์ ๋ถ๋ค๊ป์๋ ์ฃผ๋ํ๋์ Git hub์ ๊ด์ฌ์ ์ฃผ์ธ์! ๐ Selection Sort (์ ํ ์ ๋ ฌ)๋? ์ ํ ์ ๋ ฌ์ ์ฃผ์ด์ง Data ์ค ์ต์๊ฐ์ ์ฐพ๊ฒ ๋๋ ๊ฒ์ด์์. ๊ทธ๋ฐ ๋ค ํด๋น ์ต์๊ฐ์ ๋งจ ์์ ์์นํ ๊ฐ๊ณผ ์๋ฆฌ๋ฅผ ๋ฐ๊พธ๊ฒ ๋๋ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋งจ ์์ ์์น๋ฅผ ๋บ ๋๋จธ์ง Data๋ฅผ ๋์ผํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ๋ณตํ๋ ๊ฒ์ด์์. ์ด๋ฏธ ์ต์๊ฐ์ผ๋ก ์๋ฆฌ๊ฐ ์ด๋ ๋ ๊ฒ๋ค์ ๋ค์ ์๋ฆฌ ์ด๋์ ํ ํ์๊ฐ ์์ผ๋ ์ ๋ ฌ์ ์๋ n -1 ๋งํผ ์ค์ด๋๋ ๊ฒ์ด์์. ์ฐธ๊ณ ์ฌ์ดํธ : https://visualgo.net/ko/sorting VisuAlgo - So..
2021.09.08 -
[์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ] ๊ณต๊ฐ ๋ณต์ก๋์ ์ฌ๊ทํจ์๋?
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. ์ค๋์ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๊ฐ ๋ณต์ก๋์ ๋ํด ๊ณต๋ถ ํด ๋ณด๋๋ก ํ๋ ๊ฒ์ด์์. ์์ค ์ฝ๋์ ๋ํด์ ํ์ธ ํ๊ณ ์ถ์ผ์ ๋ถ๋ค๊ป์๋ ์ฃผ๋ํ๋์ Git hub์ ๊ด์ฌ์ ์ฃผ์ธ์! ๐ ๊ณต๊ฐ ๋ณต์ก๋ (Space Comploexity) ์๊ณ ๋ฆฌ์ฆ์์ ๊ณ์ฐ ๋ณต์ก๋๋ฅผ ๊ณ์ฐํ ๋ ๋ ๊ฐ์ง๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด์์. ์๊ฐ ๋ณต์ก๋: ์ผ๋ง๋ ๋น ๋ฅด๊ฒ ์คํ๋๋๊ฐ? ๊ณต๊ฐ ๋ณต์ก๋: ์ผ๋ง๋ ์ ์ ์ ์ฅ ๊ณต๊ฐ ์ฉ๋์ ์ฌ์ฉํ๋๊ฐ? ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ข์ ์๊ณ ๋ฆฌ์ฆ์ด๋? ์คํ ์๊ฐ๋ ์งง๊ณ , ์ ์ฅ ๊ณต๊ฐ๋ ์ ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด๊ฒ ์ง์? ํ์ง๋ง, ๋ ๋ค ๋ง์กฑ ์ํค๊ธด ์ด๋ ค์ด ๊ฒ์ด์์. ์๋ํ๋ฉด? ์๊ฐ๊ณผ ๊ณต๊ฐ์ ์์ ํ์ง๋ ์์ง๋ง, ๋ฐ ๋น๋ก์ ์ฑํฅ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ด๋๋๋ค. ํ์ง๋ง ์ต๊ทผ์๋ ๋์ฉ๋ System์ด ๋ณดํธํ๋๋ฉด์ ๊ณต๊ฐ ๋ณต์ก๋ ..
2021.09.08 -
[์๊ณ ๋ฆฌ์ฆ] 01. ๋ฒ๋ธ์ ๋ ฌ
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. ์ค๋์ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ณ ๋ฆฌ์ฆ์์ Bubble Sort์ ๋ํด ๊ณต๋ถ ํด ๋ณด๋๋ก ํ๋ ๊ฒ์ด์์. ์์ค ์ฝ๋์ ๋ํด์ ํ์ธ ํ๊ณ ์ถ์ผ์ ๋ถ๋ค๊ป์๋ ์ฃผ๋ํ๋์ Git hub์ ๊ด์ฌ์ ์ฃผ์ธ์! ๐ Sorting (์ ๋ ฌ)์ด๋? ์ ๋ ฌ์ ์ด๋ค Data๊ฐ ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ์ ํด์ง ์์๋๋ก ๋์ดํ๋ ๊ฒ์ด์์. ์ ๋ ฌ์ Program ์์ฑ ์ ๋น๋ฒํ๊ฒ ํ์ํ๋ต๋๋ค! ๋๋ฌธ์ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ๊ณ , ์ด๋ฅผ ๊ณต๋ถํด์ผ ํ๋ ๊ฒ์ด์์. ๋ค์ํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ดํดํ๊ฒ ๋๋ค๋ฉด ๋์ผํ ๋ฌธ์ ์ ๋ํด ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐํด ๋ณผ ์ ์๊ฒ ๋๊ณ , ๊ฐ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ ์ฑ๋ฅ ๋น๊ต๋ฅผ ํตํด, ์ฑ๋ฅ ๋ถ์์ ๋ํด์๋ ์ดํดํ ์ ์๋ต๋๋ค! ๐ Bubble Sort (๋ฒ๋ธ ์ ๋ ฌ)๋? ๋ ์ธ์ ํ Data๋ฅผ ์๋ก ๋น๊ต..
2021.09.07 -
[์๋ฃ๊ตฌ์กฐ] Heap (2)
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. ์ค๋์ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฃ๊ตฌ์กฐ์์ Heap ๊ตฌ์กฐ์ ๋ํด ๊ณต๋ถ ํด ๋ณด๋๋ก ํ๋ ๊ฒ์ด์์. ์ด๋ฒ ํผ๋๋ Heap์ ๋๋ฒ์งธ ํผ๋ ์ ๋๋ค. 1ํธ์ ์ ๋ณด์ ๋ถ๋ค์ [์๋ฃ๊ตฌ์กฐ] Heap (1)์ ๊ด์ฌ์ ์ฃผ์ธ์! ๋ํ, ์์ค ์ฝ๋์ ๋ํด์ ํ์ธ ํ๊ณ ์ถ์ผ์ ๋ถ๋ค๊ป์๋ ์ฃผ๋ํ๋์ Git hub์ ๊ด์ฌ์ ์ฃผ์ธ์! ๐ Heap ์ญ์ (Max Heap ์์) ๐ Heap Class ๊ตฌํ ๐ Delete ์ฒซ๋ฒ์งธ ํ์ ์ต์๋จ Node (Root Node)๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ธ ๊ฒ์ด์์. ์๋ํ๋ฉด ํ์ ๋ณธ๋ ์ฉ๋๊ฐ ์ต๋๊ฐ ๋๋ ์ต์๊ฐ์ Root Node์ ๋์ ๋ค ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๋ฐ๋ก ๊บผ๋ด ์ธ ์ ์๋๋ก ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ธ ๊ฒ์ด์์. def pop(self): # heap์ ์๋ Da..
2021.09.06 -
[์๋ฃ๊ตฌ์กฐ] Heap (1)
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. ์ค๋์ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฃ๊ตฌ์กฐ์์ Heap ๊ตฌ์กฐ์ ๋ํด ๊ณต๋ถ ํด ๋ณด๋๋ก ํ๋ ๊ฒ์ด์์. ์์ค ์ฝ๋์ ๋ํด์ ํ์ธ ํ๊ณ ์ถ์ผ์ ๋ถ๋ค๊ป์๋ ์ฃผ๋ํ๋์ Git hub์ ๊ด์ฌ์ ์ฃผ์ธ์! ๐ Heap ๊ตฌ์กฐ ๐ Heap (ํ)์ด๋? Data์์ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํด ๊ณ ์๋ Complete Binary Tree (์์ ์ด์ง ํธ๋ฆฌ)์ธ ๊ฒ์ด์์. ๊ทธ๋ผ ์์ ์ด์ง ํธ๋ฆฌ๊ฐ ๋ฌด์์ผ๊น์? Node๋ฅผ ์ฝ์ ํ ๋, ์ต ํ๋จ ์ผ์ชฝ Node๋ถํฐ ์ฐจ๋ก๋๋ก ์ฝ์ ํ๋ ๊ฒ์ ๋งํ๋ต๋๋ค! ๐ ํ์ ์ฌ์ฉํ๋ ์ด์ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ , ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด $O(n)$์ด ๊ฑธ๋ฆฐ๋ค. ์ด์ ๋ฐํด, ํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ , ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ฐพ์ผ๋ฉด, $O(logn)$์ด ๊ฑธ๋ฆฐ๋ค. ์ฐ์ ์์ ํ์ ๊ฐ์ด..
2021.09.06