๐งชComputer Science
2024 2ํ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ ํฉ๊ฒฉ ๋ ํ ํ๊ธฐ
์ฒ์์ผ๋ก ์๊ฒฉ์ฆ ์ทจ๋ ํ๊ธฐ๋ฅผ ์ฌ๋ ค๋ณด๋ ค๊ณ ํฉ๋๋ค ์ ๋ ํญ์ ์ํ์ ์ค๋นํ ๋ ์ฑ๊ณตํ ์ฌ๋๋ค์ ์ฌ๋ก๋ฅผ ์ฐธ๊ณ ํ๋ ํธ์ธ๋ฐ '๋๋จํ๋ค ๋๋ ์ด๋ ๊ฒ ๋๊ณ ์ถ๋ค', '์ด๋ ๊ฒ ํ๋ฉด ๋๋๊ตฌ๋' ์๊ฐํ๋ฉด์ ๋๊ธฐ๋ถ์ฌ๋ ๋๊ณ , ๋ฐฉํฅ์ ์ก์ ์ ์์ด์ ์ข์ ์ต๊ด์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๊ฒฉ์ฆ ์ธ์ฆ์ผ๋ก ๊ธ์ ์์ํ์ฃ ! ๋ฒ ์ด์ค ์ง์์ด ์ด๋ป๊ฒ ๋ผ?๋ผ๋ ์ง๋ฌธ์ ๋จผ์ ๋ต๋ณ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์์ธ 4๋ ์ ๋ํ ์ํํธ์จ์ด ์ ๊ณต, ๊ฒฝ์ ๋ณต์์ ๊ณต์ผ๋ก ์กธ์ ํ์์ต๋๋ค.์ฆ ๋ฒ ์ด์ค๊ฐ ์์ง ์๊ณ ์ฒ์ ๊ธฐ๋ณธ์๋ฅผ ๋ณด์์ ๋ ์๋ฒฝํ๊ฒ ์์ง ๋ชปํ์ง๋ง ์ด๋์ ๊ฐ ๋ณธ์ ์๋ค! ์ ๋์ ์์ค์์ ์์ํ์์ต๋๋ค. ๋ํ ์ ๊ท ๊ณผ์ ์ฑ์คํ ๋ค์ ๋ณดํต์ ์กธ์ ์ ์ ๋๋ผ๊ณ ๋ณด์๋ฉด ๋ ๊ฒ๊ฐ์ต๋๋ค. ์ผ๋ง๋ ๊ณต๋ถํ์ด?๋นก์ธ์ง ์๊ฒ 4์ฃผ ์ก๊ณ ๊ณต๋ถํ์ต๋๋ค.์ดํ, ์ผ์ฃผ์ผ ๊ณต๋ถํ๋ค๋ ์ฒ์ฌ๋ถ๋ค๋ ๊ฐ..
[์๊ณ ๋ฆฌ์ฆ] ์ต์ ์คํจ๋ ํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ | ํฌ๋ฃจ์ค์นผ/ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ
~๋ชฉ์ฐจ~ ์คํจ๋ ํธ๋ฆฌ๋? ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ (์ต์) ์คํจ๋ ํธ๋ฆฌ๋? ์ต์ ์คํจ๋ ํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ์ค๋ช ํ๊ธฐ ์ด์ ์ ์คํจ๋ ํธ๋ฆฌ(Spanning Tree)๋ ๋ฌด์์ธ๊ฐ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์คํจ๋ ํธ๋ฆฌ๋ ์ด๋ค ๊ทธ๋ํ์์ ๋ชจ๋ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ฉฐ ์ฌ์ดํด์ด ์๋ ๋ถ๋ถ ๊ทธ๋ํ๋ฅผ ์๋ฏธํฉ๋๋ค ๊ทธ๋ฆผ์ผ๋ก ์ดํดํด๋ณด๊ฒ ์ต๋๋ค ์ผ์ชฝ๊ณผ ๊ฐ์ ์ด๊ธฐ ๊ทธ๋ํ๊ฐ ์์ ๋ ์ค๋ฅธ์ชฝ ๊ทธ๋ํ๋ ์คํจ๋ ํธ๋ฆฌ์ ๋๋ค. ๊ทธ๋ผ ์๋ ๊ทธ๋ํ๋ ์คํจํ ํธ๋ฆฌ ์ผ๊น์? ์๋๋๋ค. ์ค๋ฅธ์ชฝ ๊ทธ๋ํ๋ ์ฌ์ดํด์ด ๋ฐ์ํ๊ณ , ์ค๋ฅธ์ชฝ ๊ทธ๋ํ๋ ๋ชจ๋ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ์ง ์๊ณ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์๋ ๊ทธ๋ํ๋ ์ ์ฅ(์คํจ๋) ํธ๋ฆฌ์ผ๊น์? ๊ทธ๋ ์ต๋๋ค. ์ ์ฅ ํธ๋ฆฌ ์ค ์ต์ ์ ์ฅ ํธ๋ฆฌ์ ๋๋ค. ์ต์ ์ ์ฅ(์คํจ๋) ํธ๋ฆฌ๋ ์ ์ฅ ํธ๋ฆฌ ์ค ๊ฐ์ฅ ์ ์ ๋น์ฉ์ ๊ฐ๋ ๊ทธ๋ํ์ ๋๋ค. ๋ชจ๋ ..
[์๊ณ ๋ฆฌ์ฆ] ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ | ๋ค์ต์คํธ๋ผ | ํ๋ก์ด๋ ์์
~๋ชฉ์ฐจ~ ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ํ๋ก์ด๋์์ ์๊ณ ๋ฆฌ์ฆ ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ ๋ ๊ทธ๋ํ ๋ฌธ์ ๋ก ์ฐํ ์บ 6๊ธฐ ์ฝ๋ฉํ ์คํธ์๋ ๋์์๋ค ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋ค์ต์คํธ๋ผ(Dijkstra, ๋ฐ์ดํฌ์คํธ๋ผ) ์๊ณ ๋ฆฌ์ฆ๊ณผ ํ๋ก์ด๋ ์์ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค ๊ธฐ๋ณธ์ ์ผ๋ก ๊ทธ๋ํ์ ๋ํ ์ดํด๋ฅผ ๋ฐํ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ด ์งํ๋๋ค ๋ ธ๋์์ ๋ค๋ฅธ ๋ ธ๋๋ก ์ ๊ทผ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ๋ฌดํ์(int(1e9) in Python)๋ก ํ์ํ๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ์์ ๋ ธ๋๋ก๋ถํฐ ๊ฐ ๋ ธ๋๊น์ง ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ฌธ์ ํด๊ฒฐ์ ์ํ ๋ฐฉ๋ฒ์ 2๊ฐ์ง๊ฐ ์๋ค. ๋ฆฌ์คํธ(๋ฐฐ์ด)์ ์ฌ์ฉํ๊ฑฐ๋ ์ฐ์ ์์ ํ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ฝ์ง๋ง ์๊ฐ ๋ณต์ก๋์์ ์ฐจ์ด๊ฐ ๋ง์ด ๋๋ฏ๋ก..
[์๊ณ ๋ฆฌ์ฆ] ์๊ฐ๋ณต์ก๋ ๊ตฌํ๊ธฐ
์ฒ์ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ ๊ธ์ ์์ฑํ๊ฒ ๋์์ต๋๋ค(๋๊ทผ) ์๋ (2022) ์ด๋ง๋์ฏค ํ๊ต์์ ํ์ตํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋์ ๊ดํ ๋ด์ฉ์ ๋๋ค. ์ฝ๋ฉํ ์คํธ๊ฐ ์ต์ํด์ง๋ฉด์ ํจ์จ์ฑ์ ์๊ตฌํ๋ ๋ฌธ์ ๋ค๊ณผ ๋ง๋ฑ๋จ๋ฆฌ๊ฒ ๋์๋๋ฐ, ์ด๋ ์์์ผ ํ ๊ธฐ์ด ๊ฐ๋ ์ด ๋ฐ๋ก ์๊ฐ๋ณต์ก๋์ ๋๋ค. ๋ด๊ฐ ์ง ์ฝ๋๊ฐ ์ ๋ ฅ ๋๋น ์ผ๋งํผ์ ์๊ฐ์ด ํ์ํ๊ฐ๋ฅผ ๊ณ์ฐํ์ฌ ํจ์จ์ฑ์ ํ๋จํ๊ณ , ๋นํจ์จ์ ์ด๋ผ๋ฉด ์ด๋ค ๋ถ๋ถ์ ์์ ํ ์ง ์๊ฐํด ๋ณผ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ชฉ์ฐจ 1. ์ ์ & ํ๊ธฐ๋ฒ 2. O(1) 2. O(N) 3. O(N²) 4. O(NlogN) 1. ์ ์ & ํ๊ธฐ๋ฒ ์ํค ๋ฐฑ๊ณผ์์ ์ธ์ฉํด ์จ ์ปดํจํฐ๊ณผํ์์ ์๊ฐ๋ณต์ก๋์ ์ ์ ์ ๋ ฅ์ ๋ํ๋ด๋ ๋ฌธ์์ด ๊ธธ์ด์ ํจ์๋ก์ ์๋ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ทจํด ์๊ฐ์ ์ ๋ํํ๋ ๊ฒ ๋ค์์ ์๊ฐ๋ณต์ก๋์ 3๊ฐ์ง ํํ๋ฒ์ ๋๋ค. ์ต..