- Today
- Total
๋ชฉ๋ก์ ์ฒด ๊ธ (355)
DATA101
๐ ๋ชฉ์ฐจ 1. ํ ์๋ฃ๊ตฌ์กฐ 2. ํ ์๋ฃ๊ตฌ์กฐ๋ ์ธ์ ์ฌ์ฉํ ๊น? 3. ํ ์๋ฃ๊ตฌ์กฐ์ ์ข ๋ฅ 4. ํ ์๋ฃ๊ตฌ์กฐ์ ๋์ ๊ณผ์ (์ต์ ํ) 4.1. ๋ฐ์ดํฐ ์ฝ์ 4.2. ๋ฐ์ดํฐ ์ญ์ 5. ํ ์๋ฃ๊ตฌ์กฐ ๊ตฌํ(Python) 5.1. heapq ์ ์ 5.2. ํ ๋ฐ์ดํฐ ์ฝ์ (heappush) 5.3. ํ ๋ฐ์ดํฐ ์ญ์ (heappop) 5.4. ๋ฆฌ์คํธ๋ฅผ ํ์ผ๋ก ๋ณ๊ฒฝ(heapify) 1. ํ ์๋ฃ๊ตฌ์กฐ ํ ์๋ฃ๊ตฌ์กฐ๋ ๊ฐ์ฅ ๋์(ํน์ ๊ฐ์ฅ ๋ฎ์) ์ฐ์ ์์(e.g., ์ต๋๊ฐ, ์ต์๊ฐ)๋ฅผ ๊ฐ์ง๋ ๋ ธ๋๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์๋ด๊ธฐ ์ํด ๊ณ ์๋ *์์ ์ด์งํธ๋ฆฌ(Complete Binary Tree) ๊ธฐ๋ฐ์ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ฅ ๋์(๋๋ ๊ฐ์ฅ ๋ฎ์) ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ ๋ ธ๋๊ฐ ํญ์ ๋ฃจํธ ๋ ธ๋(root node)์ ์ค๋ ๊ฒ ํน์ง์ ๋๋ค. * ์..
๐ ๋ชฉ์ฐจ 1. ์ฐ์ ์์ ํ(Priority Queue)๋? 2. ํ(Heap) ์๋ฃ๊ตฌ์กฐ 2.1. ํ ์๋ฃ๊ตฌ์กฐ๋? 2.2. ์ฐ์ ์์ ํ ๊ตฌํ ๋ฐฉ์: ๋ฆฌ์คํธ vs ํ 3. ํ ๊ธฐ๋ฐ์ ์ฐ์ ์์ ํ ๊ตฌํ(Python) 3.1. heapq ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์๊ฐ 3.1.1. ํ ์์ ์ถ๊ฐ(heappush) 3.1.2. ํ ์์ ์ญ์ (heappop) 3.1.3. ๋ฆฌ์คํธ๋ฅผ ํ์ผ๋ก ๋ณ๊ฒฝ(heapify) 3.2. ํ ๊ธฐ๋ฐ์ ์ฐ์ ์์ ํ ๊ตฌํ ์์ 1. ์ฐ์ ์์ ํ(Priority Queue)๋? ์ฐ์ ์์ ํ๋ ๋ง ๊ทธ๋๋ก ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ๋จผ์ ์ถ์ถํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ(Queue) ์๋ฃ๊ตฌ์กฐ๋ ์ ์ ์ ์ถ ๋ฐฉ์์ผ๋ก์ ๊ฐ์ฅ ๋จผ์ ์ฝ์ ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ๋จผ์ ์ถ์ถํฉ๋๋ค. ๊ฐ๋จํ๊ฒ ํน์ง์ด ์ ์ฌํ ์๋ฃ๊ตฌ์กฐ๋ค์ ..
๋ณธ ํฌ์คํ ์์๋ ๊ทธ๋ํ(graph) ์๋ฃ๊ตฌ์กฐ์ ๋ํด ์์๋ด ๋๋ค. ๊ทธ๋ํ ์๋ฃ๊ตฌ์กฐ์ ๊ตฌ์ฑ ๊ทธ๋ํ๋ ๊ทธ๋ฆผ 1 ๊ณผ ๊ฐ์ด ๋ ธ๋(Node)์ ๊ฐ์ (Edge)์ผ๋ก ํํ๋ฉ๋๋ค. ์ด๋ ๋ ธ๋๋ ์ ์ (Vertext)์ด๋ผ๊ณ ๋ ๋ถ๋ฆฝ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ ธ๋์ ๊ฐ์ ์ ๊ฐ๊ฐ ๋์์ ๋์๋ฅผ ์๋ ๋๋ก๋ฅผ ์์๋ก ๋ง์ด ํํ๋ฉ๋๋ค. ์ฆ, A ๋์(๋ ธ๋)์ B ๋์(๋ ธ๋)๊ฐ ์์ ๋, A ๋์์์ B ๋์๋ก ์ด๋ํ๊ธฐ ์ํด ๋๋ก(๊ฐ์ )๋ฅผ ๊ฑฐ์น๋ค๊ณ ์๊ฐํ์๋ฉด ๋ ธ๋์ ๊ฐ์ ์ ๋ํ ์ดํด๊ฐ ์ฌ์ธ ๊ฒ์ ๋๋ค. ๊ทธ๋ํ ํ์? ๊ทธ๋ํ ํ์์ด๋ ํ๋์ ๋ ธ๋์์ ์์ํด์ ๋ค๋ฅธ ๋ ธ๋๋ค์ ๋ฐฉ๋ฌธํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ ธ๋ ์ธ์ ? ๋ ๋ ธ๋๊ฐ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๋ฉด, '๋ ๋ ธ๋๋ ์ธ์ (Adjacent)ํด ์๋ค'๋ผ๊ณ ๋งํฉ๋๋ค. ๊ทธ๋ํ ์๋ฃ๊ตฌ์กฐ ๊ด๋ จ ์ฉ์ด ์ ๋ฆฌ ๊ทธ๋ํ(ํธ..
๋ณธ ํฌ์คํ ์์๋ ๋ค์ด๋๋ฏน(๋์ ) ํ๋ก๊ทธ๋๋ฐ์ ๋ํด ์์๋ด ๋๋ค. ๐ ๋ชฉ์ฐจ 1. ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ด๋? 2. ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ ์์ 3. ์ฌ๊ทํจ์ ๊ธฐ๋ฐ ๊ตฌํ 3.1. ์์ค์ฝ๋ 3.2. ๋ฌธ์ ์ 3.2.1. ์ฐ์ฐ ๋ณต์ก์ฑ 3.2.2. ๋ฌธ์ ๋ฐ์์ ์์ธ 3.2.3. ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ์ 4. ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฐ ๊ตฌํ 4.1. ํ ๋ค์ด ๋ฐฉ์(์ฌ๊ทํจ์ ํ์ฉ) 4.1.1. ๋ฉ๋ชจ์ด์ ์ด์ ์ด๋? 4.1.2. ์์ค์ฝ๋ 4.1.3. ํน์ง 4.2. ๋ฐํ ์ ๋ฐฉ์(๋ฐ๋ณต๋ฌธ ํ์ฉ) 4.2.1. ์์ค์ฝ๋ 4.2.2. ํน์ง 1. ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ด๋? ๋ค์ด๋๋ฏน(๋์ ) ํ๋ก๊ทธ๋๋ฐ์ ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋๋์ด ์ฐ์ฐ ์๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ต๋ํ์ผ๋ก ํ์ฉํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ ๋๋ค. ํน์ ๊ฐ์ ์ป๊ธฐ ์ํด ๋งค๋ฒ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ์ฐ์ฐ์ ๊ตณ์ด ๋ฐ๋ณตํด..
๋ณธ ํฌ์คํ ์์๋ ์ด์ง ํ์(Binary Search) ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์์๋ด ๋๋ค. ๐ ๋ชฉ์ฐจ 1. ์ด์ง ํ์์ด๋? 2. ์ด์ง ํ์์ ๋์ ๊ณผ์ 3. ์ด์ง ํ์์ ์๊ฐ ๋ณต์ก๋ 4. ์ด์ง ํ์ ๊ตฌํ(Python) 1. ์ด์ง ํ์์ด๋? ์ด์ง ํ์์ ํ์์ ๋ฒ์๋ฅผ ์ ๋ฐ์ฉ ์ขํ๊ฐ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์ด์งํ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฆฌ์คํธ ๋ด ๋ฐ์ดํฐ๊ฐ ์ด๋ ์ ๋ ์ ๋ ฌ๋์ด ์์ด์ผ๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ ๋ฐ์ดํฐ๊ฐ ๋ฌด์์๋ก ์ ๋ ฌ๋์ด ์๋ค๋ฉด ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ ๋ฐ์ดํฐ๊ฐ ๋ง๊ฑฐ๋(e.g., 1,000๋ง ๊ฐ ์ด์) ํ์ ๋ฒ์์ ํฌ๊ธฐ๊ฐ ๋งค์ฐ ๋์ ๋(e.g., 1,000์ต ์ด์) ํจ๊ณผ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. 2. ์ด์ง ํ์์ ๋์ ๊ณผ์ ์ด์ง ํ์์ ๋์ ๊ณผ์ ์ ๋ํด ์ดํดํ๊ธฐ ์ํด์๋ ์์ฐจ ํ์(..
๋ณธ ํฌ์คํ ์์๋ ์์ฐจ ํ์(Sequential Search)์ ๋ํด ์์๋ด ๋๋ค. ๐ ๋ชฉ์ฐจ 1. ์์ฐจ ํ์(์ด๋? 2. ๋์ ๊ณผ์ 3. ๊ตฌํ(Python) 4. ์๊ฐ ๋ณต์ก๋ 1. ์์ฐจ ํ์์ด๋? ์์ฐจ ํ์(Sequential Search)์ ๋ง ๊ทธ๋๋ก ๋ฆฌ์คํธ ๋ด ํน์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ ์ํด ์์์๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฐจ๋ก๋๋ก ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. 2. ๋์ ๊ณผ์ ์์ฐจ ํ์์ ๊ณผ์ ์ ์๋์ ๊ฐ์ต๋๋ค. ํ์ด์จ์ ๋ณต์กํด ๋ณด์ด์ง๋ง ๋งจ ์์์๋ถํฐ ์ฐจ๋ก๋๋ก ๋น๊ตํ๋ ๋จ์ํ ๋ฐฉ๋ฒ์ ๋๋ค. 1๏ธโฃ ๋งจ ์ ๋ฐ์ดํฐ์ ์ฐพ์ผ๋ ค๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ์์ง ํ์ํฉ๋๋ค. 2๏ธโฃ ๋ฐ์ดํฐ๊ฐ ์๋ก ๊ฐ์ง ์๋ค๋ฉด ๋ค์ ๋ฐ์ดํฐ์ ์ฐพ์ผ๋ ค๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ์์ง ํ์ํฉ๋๋ค. 3๏ธโฃ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ ์ ๊น์ง 2๏ธโฃ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค. ๋ฆฌ์คํธ ๋ด ๋ฐ์ดํฐ๊ฐ ์๋ฌด๋ฆฌ ๋ง์๋ ..
๋ณธ ํฌ์คํ ์์๋ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ต์ ๊ณต์ ํฉ๋๋ค. ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํด๊ฒฐ ์ ๋ต ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด์ ์์ด์ ํน๋ณํ ๋ฌธ์ ์์ ์๊ตฌ์ฌํญ์ด ์์ ๊ฒฝ์ฐ, ๋จ์ํ ์ ๋ ฌ์ด ํ์ํ ์ํฉ์์๋ ๊ธฐ๋ณธ ๋ด์ฅ ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ๋ค๋ง, ๋ฐ์ดํฐ์ ๋ฒ์๊ฐ ํ์ ๋์ด ์๊ณ ๋์ฑ ๋น ๋ฅด๊ฒ ๋์ํ๋๋ก ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํ๋ค๋ฉด ๊ณ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด์ฒ๋ผ ์๋์ ์ฃผ์ด์ง ์ํฉ์ ๋ง๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ต์ ์ ๋ฆฌํด ๋ณด์์ต๋๋ค. (1) ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ ๋ฌธ์ ๋จ์ํ ๋ด์ฅ ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์๊ณ ์๊ณ ์ฌ์ฉํ ์ค ์๋์ง ๋ฌป๊ธฐ ์ํ ๋ฌธ์ ์ ํ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ ์ ๋ ฌ ํจ์ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ํด ๊ธฐ๋ณธ์ ์ธ ๋ถ๋ถ๋ค์ ๋ํด ์์งํ๊ณ ์์ผ๋ฉด ์ด๋ ต์ง ์๊ฒ ๋ฌธ์ ๋ฅผ ํ ์ ์์ต๋๋ค. (..
์ค๋์ ํ์ด์ฌ ๋ด์ฅ ํจ์์ธ sorted()์ sort()๋ฅผ ํ์ฉํ ๋ฐ์ดํฐ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต์ ํด ๋๋ฆฝ๋๋ค. ๊ทธ๋ผ ๋ฐ๋ก ์์ํ์ฃ ! ๋ชฉ์ฐจ 1. ๊ธฐ๋ณธ ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ 2. sorted ํจ์ 3. sort ํจ์ 4. key ๋งค๊ฐ๋ณ์๋ฅผ ํ์ฉํ ์ ๋ ฌ ๊ธฐ์ค ์ค์ 5. ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํด๊ฒฐ ์ ๋ต 1. ๊ธฐ๋ณธ ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ด์ฌ์๋ sorted ๋ฐ sort๋ผ๋ ์ ๋ ฌ ํจ์๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋์ด ์์ต๋๋ค. ์ด ํจ์๋ค์ ๋ฆฌ์คํธ, ๋์ ๋๋ฆฌ, ์งํฉ ๋ฑ์ ๋ฐ์ดํฐ ํ์ ์ ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฐ๊ณ , ๋ฐ์ดํฐ ํ์ ์ ์๊ด์์ด ํญ์ ๋ฆฌ์คํธ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ๊ฒ์ด ํน์ง์ ๋๋ค. ๋ํ, ์ด ํจ์๋ค์ ์ต์ ์ ๊ฒฝ์ฐ์๋ O(N*log N) ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ณด์ฅํ๋ค๋ ๊ฒ์ด ํน์ง์ ๋๋ค. ๊ทธ๋ผ sorted ํจ์์ sort ํจ์ ๊ฐ๊ฐ์..