๐ŸงชComputer Science

    [์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ | ํฌ๋ฃจ์Šค์นผ/ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

    ~๋ชฉ์ฐจ~ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ž€? ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (์ตœ์†Œ) ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ž€? ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๋ช…ํ•˜๊ธฐ ์ด์ „์— ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ(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๊ฐ€์ง€ ํ‘œํ˜„๋ฒ•์ž…๋‹ˆ๋‹ค. ์ตœ..