Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (1096)

KoreanFoodie's Study

๊ธฐ์ˆ ๋ฉด์ ‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ [Graph] : ํฌ๋ฃจ์Šค์นผ (Kruskal - Minimum Spanning Tree)

๊ธฐ์ˆ ๋ฉด์ ‘๊ณผ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„๋ฅผ ์œ„ํ•ด ๊ผญ ์•Œ์•„์•ผ ํ•  ๊ธฐ์ดˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ด€๋ จ ๊ฐœ๋…๋“ค๊ณผ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ฃผ์ œ๋“ค์€ GeeksForGeeks ์˜ Top 10 algorithms in Interview Questions ๊ธ€์—์„œ ๋ฐœ์ทŒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Kruskal - Minimum Spanning Tree) ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋‹ค๋งŒ ์›๋ฆฌ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. ๋จผ์ €, ๋ชจ๋“  Vertex ๋“ค์„ ๋ณ„๋„์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋งŒ๋“ ๋‹ค. ๊ทธ ํ›„, ๋ชจ๋“  ์—ฃ์ง€๋“ค์„ ์šฐ์„ ์ˆœ์œ„ ํ์— ๋„ฃ๊ณ , ์ตœ์†Œ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ ๋…€์„๋“ค๋ถ€ํ„ฐ ๊บผ๋‚ด ๋‘ Vertex ๋ฅผ ์ด์–ด์ค€๋‹ค. ์ด๋•Œ, ๊ฐ™์€ ์ง‘ํ•ฉ์ธ ๊ฒฝ์šฐ๋Š” ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ง‘ํ•ฉ์ด ๊ฐ™์€์ง€๋ฅผ ํŒ๋ณ„ํ•˜๋Š” ๊ฒƒ์€ Union-Find ๋ฅผ ์ด์šฉํ•ด ๊ฒ€์‚ฌํ•œ๋‹ค...

๊ธฐ์ˆ ๋ฉด์ ‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ [Graph] : ํ”„๋ฆผ (Prim - Minimum Spanning Tree)

๊ธฐ์ˆ ๋ฉด์ ‘๊ณผ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„๋ฅผ ์œ„ํ•ด ๊ผญ ์•Œ์•„์•ผ ํ•  ๊ธฐ์ดˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ด€๋ จ ๊ฐœ๋…๋“ค๊ณผ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ฃผ์ œ๋“ค์€ GeeksForGeeks ์˜ Top 10 algorithms in Interview Questions ๊ธ€์—์„œ ๋ฐœ์ทŒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ) ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ Greedy ํ•œ ๋ฐฉ์‹์œผ๋กœ Vertex ๋“ค์„ ์ด์–ด ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” : ํ•ด๋‹น ์ •์ ์˜ ์ง‘ํ•ฉ ๋Œ€ํ•ด, ์—ฐ๊ฒฐ๋œ {๊ฐ„์„ , ์ •์ } ์Œ์„ ์ •์  ๊ฐ€์ค‘์น˜ ๊ธฐ์ค€์œผ๋กœ ์šฐ์„ ์ˆœ์œ„ ํ์— ๋„ฃ๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์ค‘์น˜๊ฐ€ ๊ธฐ์กด์˜ ๊ฐ€์ค‘์น˜๋ณด๋‹ค ์ž‘์œผ๋ฉด์„œ, ๋„์ฐฉ ์ง€์ ์ด ๋ฏธ๋ฐฉ๋ฌธ์ธ ๋…ธ๋“œ๋ฅผ ์ง‘ํ•ฉ์— ๋„ฃ๊ณ , ์ถ”๊ฐ€๋œ ๋…ธ๋“œ์˜ {๊ฐ„์„ , ์ •์ } ์Œ๋“ค์„ ๋‹ค์‹œ ์šฐ์„ ์ˆœ์œ„ ํ์— ๋„ฃ๋Š”๋‹ค. ํ•ด๋‹น ์ž‘์—…์„ ๋ชจ๋“  Vertex ๋ฅผ ์ˆœํšŒํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉด ๋œ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š”..

๊ธฐ์ˆ ๋ฉด์ ‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ [Graph] : ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ / ์‚ฌ์ดํด ์ฐพ๊ธฐ (Union-Find / Cycle Detection)

๊ธฐ์ˆ ๋ฉด์ ‘๊ณผ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„๋ฅผ ์œ„ํ•ด ๊ผญ ์•Œ์•„์•ผ ํ•  ๊ธฐ์ดˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ด€๋ จ ๊ฐœ๋…๋“ค๊ณผ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ฃผ์ œ๋“ค์€ GeeksForGeeks ์˜ Top 10 algorithms in Interview Questions ๊ธ€์—์„œ ๋ฐœ์ทŒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ / ์‚ฌ์ดํด ์ฐพ๊ธฐ (Union-Find / Cycle Detection) ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ๋Š”, disjoint set ๋“ค์„ ํ•ฉ์ณ์„œ ๊ฐ vertex ๋“ค์ด ๊ฐ™์€ ์ง‘ํ•ฉ์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋ณ„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. parent ๋ฐฐ์—ด์— ๊ฐ vertex ์˜ ์กฐ์ƒ(root node) ์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ , find, union ๋“ฑ์˜ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ์ง‘ํ•ฉ์„ ํ•ฉ์นœ๋‹ค. find ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ, ์žฌ๊ท€์ ์œผ๋กœ ๊ฒฝ๋กœ ํƒ์ƒ‰ ๋„์ค‘ ๋งŒ๋‚œ vertex ๋“ค์ด ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ..

๊ธฐ์ˆ ๋ฉด์ ‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ [Graph] : Floyd-Warshall (ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ - ์ตœ๋‹จ๊ฑฐ๋ฆฌ ์Œ)

๊ธฐ์ˆ ๋ฉด์ ‘๊ณผ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„๋ฅผ ์œ„ํ•ด ๊ผญ ์•Œ์•„์•ผ ํ•  ๊ธฐ์ดˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ด€๋ จ ๊ฐœ๋…๋“ค๊ณผ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ฃผ์ œ๋“ค์€ GeeksForGeeks ์˜ Top 10 algorithms in Interview Questions ๊ธ€์—์„œ ๋ฐœ์ทŒํ•˜์˜€์Šต๋‹ˆ๋‹ค. Floyd-Warshall (ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ - ์ตœ๋‹จ๊ฑฐ๋ฆฌ ์Œ) ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ(Floyd-Warshall) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ฃผ์–ด์ง„ ๊ทธ๋ž˜ํ”„์˜ ๋ชจ๋“  ์ •์ ๋“ค์— ๋Œ€ํ•œ ์ตœ์†Œ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์›๋ฆฌ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•œ๋ฐ, ์‹œ์ž‘์ง€์  i, ๋„์ฐฉ์ง€์  j ์˜ ๊ฑฐ๋ฆฌ ์Œ์„ ์ค‘๊ฐ„ ๊ฒฝ์œ ์ง€ k ๋ฅผ ์ง€๋‚˜๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ๊ณ„์† relaxation ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” (O^3) ์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. #include #include #define V 4 #define INF1000000 i..

๊ธฐ์ˆ ๋ฉด์ ‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ [Graph] : ๋‹ค์ต์ŠคํŠธ๋ผ (์ตœ๋‹จ ๊ฒฝ๋กœ)

๊ธฐ์ˆ ๋ฉด์ ‘๊ณผ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„๋ฅผ ์œ„ํ•ด ๊ผญ ์•Œ์•„์•ผ ํ•  ๊ธฐ์ดˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ด€๋ จ ๊ฐœ๋…๋“ค๊ณผ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ฃผ์ œ๋“ค์€ GeeksForGeeks ์˜ Top 10 algorithms in Interview Questions ๊ธ€์—์„œ ๋ฐœ์ทŒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‹ค์ต์ŠคํŠธ๋ผ (์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜) ๋‹ค์ต์ŠคํŠธ๋ผ๋Š” ์ฃผ์–ด์ง„ ์‹œ์ž‘ ์ง€์ ์—์„œ ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ์–‘์˜ ๊ฐ€์ค‘์น˜ ๊ฐ„์„ ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ๊ทธ๋ž˜ํ”„์ผ ๊ฒฝ์šฐ์— ํ•œ ์ง€์ ์—์„œ ํŠน์ • ์ง€์ ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. Naive ํ•˜๊ฒŒ ๋ชจ๋“  ์ •์ ๋“ค์„ ์ฒดํฌํ•˜๋ฉฐ, ๊ฑฐ๋ฆฌ๊ฐ’์„ relaxation ํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(V^2) ๊ฐ€ ๋‚˜์˜จ๋‹ค. (dijkstra_slow ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„) Priority_Queue ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์†Œ ๊ฑฐ๋ฆฌ์˜ ์ •์ ์„ Heapify ํ•ด์ค„ ๊ฒฝ์šฐ, ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ..

[MiniEssay] ์•„๋ฒ„์ง€๋Š” ๋ง›์—†๋Š” ์ง‘์„ ๋“ค๋ฅด์…จ๋‹ค.

๋ฐ”์•ผํ๋กœ ์˜ˆ์•ฝ๋Œ€๋ž€์ด๋‹ค. ์œ ๋ช…ํ•˜๊ณ  ๋ง›์žˆ๋Š” ๊ณณ์„ ๋ฐฉ๋ฌธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์‚ฌ์ „์ž‘์—…์ด ๊ฑฐ์˜ ํ•„์ˆ˜๊ฐ€ ๋œ ์‹œ๋Œ€๊ฐ€ ์—ด๋ ธ๋‹ค. ๋ฌผ๋ก  ๋„ˆ๋ฌด ์žฅ์‚ฌ๊ฐ€ ์ž˜ ๋˜์„œ, ๊ตณ์ด ์˜ˆ์•ฝ ๋”ฐ์œ„ ๋ฐ›์ง€ ์•Š๋Š” ์Œ์‹์ ๋“ค๋„ ๋ถ€์ง€๊ธฐ์ˆ˜๋‹ค. ๊ทธ๋Ÿฐ ๊ณณ๋“ค์€ ์ถ”์šด ๊ฒจ์šธ๋‚  ๋กฑํŒจ๋”ฉ์„ ๋ถ€์—ฌ ์žก์œผ๋ฉฐ ๊ฐ™์ด ์˜จ ์นœ๊ตฌ๋‚˜ ์—ฐ์ธ๋“ค๊ณผ ํŽญ๊ท„ ๋†€์ด๋ฅผ ํ•  ์ค€๋น„๋ฅผ ํ•ด์•ผํ•œ๋‹ค. ์•„๋ฒ„์ง€๋Š” ์ž์นญ ๋ฏธ์‹๊ฐ€์ด๊ธฐ์— ๋ง›์ง‘์„ ์ฐพ์•„๊ฐ€์‹œ๋Š” ํŽธ์ด๋‹ค. ํฌ์žฅ๋„ ์ž์ฃผ ํ•ด ์˜ค์‹œ๊ณ . ์ž์นญ ๋ฏธ์‹๊ฐ€์ธ ์•„๋ฒ„์ง€. ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ์—, ์•„๋ฒ„์ง€๋Š” ํ˜ผ(ๆทท)์‹๊ฐ€์— ๊ฐ€๊น๋‹ค. ๋ญ๋“ ์ง€ ๋น„๋น„๊ณ  ์„ž์–ด ๋“œ์‹œ๋‹ˆ๊นŒ. ์ „๋ฌธ ์šฉ์–ด๋กœ ์“ฐ๊นŒ ๋ฌต๋Š”๋‹ค๊ณ  ํ•˜๋˜๊ฐ€? ๋ง›์ง‘์˜ ์„ธ๊ณ„๋Š” ๋ƒ‰ํ˜นํ•˜๋‹ค. ์ž˜๋˜๋Š” ๊ณณ์€ ์ž˜๋˜๊ณ , ์•ˆ๋˜๋Š” ๊ณณ์€ ์•ˆ๋˜๋Š” ๋ฒ•. ๋„ˆ๋ฌด๋‚˜๋„ ๋‹น์—ฐํ•œ ๋ง์ด์ง€๋งŒ, ์Œ์‹์ ์˜ ๊ฒฝ์šฐ ๊ทธ ํŽธ์ฐจ๊ฐ€ ์ œ๋ฒ• ํฌ๋‹ค. ๋ฐ”๋กœ ์˜†์ง‘์— ๋ถ™์–ด ์žˆ์–ด๋„ ๋ฌธ์ „์„ฑ์‹œ๋ฅผ ์ด๋ฃจ๋Š” ์ง‘๊ณผ, ํŒŒ๋ฆฌ๋งŒ ๋‚ ๋ฆฌ..