๐Ÿ€ Knowledge/์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿ€ Knowledge/์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋™์  ๊ณ„ํš ์•Œ๊ณ ๋ฆฌ์ฆ˜(DP) ์œ ํ˜• ๋ณ„ ๋ฌธ์ œ ๋ชจ์Œ

๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด์—ˆ๋‹ค. ์ •ํ™•ํžˆ๋Š” ๋ถ„ํ• ํ•  ์ˆ˜ ์—†์„ ๋•Œ๊นŒ์ง€ ๋ถ„ํ• ํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋ถ€ํ„ฐ ์ ‘๊ทผํ•˜์˜€๋‹ค. ๊ต‰์žฅํžˆ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ํ•˜์ง€๋งŒ, ๋ถ„ํ• ํ•˜๋ฉฐ ์ƒ๊ธฐ๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค์ด ์ค‘๋ณต๋˜์–ด๋„ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฏธ ๊ตฌํ•œ ๋ฌธ์ œ๋ฅผ ๋˜ ํ‘ธ๋Š” ๊ฒƒ์€ ์ง€๋ฃจํ•˜๊ณ  ์‹œ๊ฐ„์ด ๋“œ๋Š” ์ผ์ด๋‹ค. ์œ ํ˜•๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒ ์ง€๋งŒ, ๋ถ„ํ• ์ •๋ณต๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ผ ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ค‘๋ณต๋œ ๋ฌธ์ œ๋ฅผ ๊ตณ์ด ๋‹ค์‹œ ํ’€์ง€ ์•Š๋Š” ํ…Œํฌ๋‹‰์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ "DP ์•Œ๊ณ ๋ฆฌ์ฆ˜", Dynamic Programming ์ธ ๊ฒƒ์ด๋‹ค. DP ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฏธ๋ฆฌ ์ตœ์†Œ ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค์˜ ํ•ด๋ฅผ ๊ตฌํ•œ๋‹ค. ์ด๋Š” ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ƒ๊ฐํ–ˆ์„ ๋•Œ ๋งค์šฐ ๋‹น์—ฐํ•˜๋‹ค๊ณ  ์—ฌ๊ฒจ์ง€๋Š” ๊ฒƒ๋“ค์ด๋‹ค. ๋˜ํ•œ ์ด ํ•ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ตœ์†Œ ๋ถ€๋ถ„ ๋ฌธ์ œ๋ณด๋‹ค ๋” ํฐ ๋ถ€๋ถ„ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋ถ€..

๐Ÿ€ Knowledge/์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ถ„ํ•  ์ •๋ณต - Selection, Closest Pair ๋ฌธ์ œ ํ•ด๊ฒฐ

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

๐Ÿ€ Knowledge/์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ž‘์—… ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜(JobScheduling) & ํ—ˆํ”„๋งŒ ์••์ถ•(Huffman)

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

๐Ÿ€ Knowledge/์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - Dijkstra, Bellman-Ford, Floyd-Warshall ์•Œ๊ณ ๋ฆฌ์ฆ˜

Dijkstra ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ตœ๋‹จ ๊ฒฝ๋กœ(Shortest Path) ์ฐพ๊ธฐ๋Š” ์ฃผ์–ด์ง„ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„์—์„œ ์ถœ๋ฐœ์ ์—์„œ ๋„์ฐฉ์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ด ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ Dijkstra ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. Dijkstra ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ถœ๋ฐœ์ ์—์„œ ๊ฐ ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ๋ฐ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ด์ „์— ๋ฐฐ์› ๋˜ Prim์˜ MST ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์œ ์‚ฌํ•˜๋‹ค. ์–ด๋–ค ์ ์ด ์ฐจ์ด๊ฐ€ ์žˆ๋ƒํ•˜๋ฉด, Prim ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ž„์˜์˜ ์ ์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘์„ ํ•˜์ง€๋งŒ, Dijkstra ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ถœ๋ฐœ ์ง€์ ์ด ์žˆ๋‹ค. ๋˜ํ•œ Prim ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋Š” ๋ฐฐ์—ด D์— ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ์ €์žฅํ–ˆ์ง€๋งŒ, Dijkstra ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฐฐ์—ด D์— ์ถœ๋ฐœ์ ์—์„œ ๊ฐ ์ •์ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅํ•œ๋‹ค. Prim ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๊ด€ํ•ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด, ์•„๋ž˜ ํฌ์ŠคํŒ…..

๐Ÿ€ Knowledge/์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST) - Kruskal, Prim, Sollin ์•Œ๊ณ ๋ฆฌ์ฆ˜

์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(Minimum Spanning Tree, MST)์ด๋ž€? ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ๋ฐฐ์šฐ๊ธฐ ์•ž์„œ, ์‹ ์žฅ ํŠธ๋ฆฌ๋ž€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„์•ผ ํ•œ๋‹ค. ์ด๋Š” ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„์˜ ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„๋กœ, ๋ชจ๋“  ์ •์ ๊ณผ ๊ฐ„์„ ์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์‹ ์žฅ ํŠธ๋ฆฌ์˜ ์ค‘์š”ํ•œ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์ ์–ด๋„ ํ•˜๋‚˜์˜ ๊ฐ„์„ ๊ณผ ์ •์ ์— ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์‚ฌ์ดํด์„ ๋งŒ๋“ค๋ฉด ์•ˆ๋œ๋‹ค. ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋Ÿฌํ•œ ์‹ ์ •ํŠธ๋ฆฌ์˜ ๊ฐœ๋…์„ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„๊ฐ€ ์‹ ์žฅ ํŠธ๋ฆฌ์˜ ์˜ˆ์‹œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ ์„ฑ๋ถ„์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌด๋ฐฉํ–ฅ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„์—์„œ ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ์ตœ์†Œ์ธ ์‹ ์žฅํŠธ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋Œ€ํ‘œ์ ์œผ๋กœ Kruskal, Prim, Sollin ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋‹ค. ์ด๋Š” ..

๐Ÿ€ Knowledge/์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ฐ• ์—ฐ๊ฒฐ ์„ฑ๋ถ„(SCC) - Kosaraju, Tarjan ์•Œ๊ณ ๋ฆฌ์ฆ˜

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

๐Ÿ€ Knowledge/์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜] Biconnect Component : ์ด์ค‘ ์—ฐ๊ฒฐ ์„ฑ๋ถ„

์ด์ค‘ ์—ฐ๊ฒฐ ์„ฑ๋ถ„(Biconnect Component)๋ž€? ์ด์ค‘ ์—ฐ๊ฒฐ ์„ฑ๋ถ„์ด๋ž€, ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ์—ฐ๊ฒฐ ์„ฑ๋ถ„์—์„œ ์ž„์˜์˜ ๋‘ ์  ์‚ฌ์ด์— ์ ์–ด๋„ ๋‘ ๊ฐœ์˜ ๋‹จ์ˆœ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋Š” ์—ฐ๊ฒฐ ์„ฑ๋ถ„์„ ๋œปํ•œ๋‹ค. ์ด๋•Œ, ์—ฐ๊ฒฐ ์„ฑ๋ถ„์ด๋ž€ ๊ทธ๋ž˜ํ”„์—์„œ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ •์ ๋“ค์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, [1, 2, 3, 4, 5], [6, 7], [8, 9, 10]๋Š” 3๊ฐœ์˜ ์—ฐ๊ฒฐ ์„ฑ๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ๋‹จ์ˆœ ๊ฒฝ๋กœ๋ž€, ๊ฒฝ๋กœ ์ƒ์˜ ์ •์ ์ด ๋ชจ๋‘ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ๋งํ•œ๋‹ค. ์ฆ‰, ์ด์ค‘ ์—ฐ๊ฒฐ ์„ฑ๋ถ„์ด๋ž€, ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ •์  ๋ฆฌ์ŠคํŠธ์ธ๋ฐ, ์ด ๋ฆฌ์ŠคํŠธ์˜ ์ž„์˜์˜ ๋‘ ์  ๊ฐ„์˜ ๊ฒฝ๋กœ ์ƒ์— ์žˆ์–ด์„œ ์ •์ ์ด ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋‘ ๊ฐœ์ด์ƒ ์กด์žฌํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ์™€ ํ•จ๊ป˜ ๊ทธ ์˜๋ฏธ๋ฅผ ํ•œ ๋ฒˆ ๋” ์‚ดํŽด๋ณด์ž. ์œ„ ๊ทธ๋ž˜ํ”„๋Š” ์ง€๊ธˆ๊นŒ์ง€..

๐Ÿ€ Knowledge/์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์œ„์ƒ ์ •๋ ฌ์„ ์ดํ•ดํ•ด๋ณด์ž.

* ์ด ๊ธ€์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๊ด€ํ•ด ํ•™์Šตํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ํ‹€๋ฆฐ ์ ์ด๋‚˜, ๊ณ ์ณ์•ผ ํ•  ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”..! ์œ„์ƒ ์ •๋ ฌ์ด๋ž€? ์œ„์ƒ ์ •๋ ฌ์ด๋ž€(Topological Sort) : ์‚ฌ์ดํด์ด ์—†๋Š” ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„(Directed Acyclic Graph, DAG)์—์„œ ์ •์ ์„ ์„ ํ˜•์ˆœ์„œ๋กœ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋•Œ DAG, ์ฆ‰ ์‚ฌ์ดํด์ด ์—†๋Š” ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ž€ ์ฃผ๋กœ ๋…ธ๋“œ๋“ค ๊ฐ„์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ๋งŒ์•ฝ ๋…ธ๋“œ๋“ค๊ฐ„์— ์‚ฌ์ดํด์ด ์กด์žฌํ•œ๋‹ค๋ฉด, DAG๋ผ๊ณ  ๋ณผ ์ˆ˜ ์—†๋‹ค. ์ฆ‰, ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์กด์žฌํ•˜๋Š” ๋…ธ๋“œ๋“ค ๊ฐ„์— ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ธ๋ฐ, ๋งŒ์•ฝ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด ๊ทธ ์ค‘ ์ž„์˜์˜ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์œ„์ƒ ์ •๋ ฌ์€ ์—ฌ๋Ÿฌ ๊ฐ’์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์œ„์ƒ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜๋Š” ๋•Œ๋Š” ์˜์กด ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•  ๋•Œ, ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•œ ์ž‘์—… ์ˆœ์„œ..

๐Ÿ€ Knowledge/์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์œ ๋‹ˆ์˜จ๊ณผ ํŒŒ์ธ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜(union, find)

Union๊ณผ find๋Š” ์ง‘ํ•ฉ๊ณผ ๊ด€๋ จ๋œ ์—ฐ์‚ฐ์ด๋‹ค. - Union : ์—ฌ๋Ÿฌ ๋…ธ๋“œ๊ฐ€ ์žˆ์„ ๋•Œ ํŠน์ • 2๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ด 1๊ฐœ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ฌถ๋Š” ์—ฐ์‚ฐ - find : ๋‘ ๋…ธ๋“œ๊ฐ€ ๊ฐ™์€ ์ง‘ํ•ฉ์— ์†ํ•ด ์žˆ๋Š” ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ ์ฝ”๋“œ ์ƒ์—์„œ์˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•๋„ ์–ด๋ ต์ง€ ์•Š๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ๋‹ˆ์˜จ๊ณผ ํŒŒ์ธ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด 1์ฐจ์› ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ดˆ๊ธฐ์—๋Š” ์•„๋ฌด ๋…ธ๋“œ๋„ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋Œ€ํ‘œ๋…ธ๋“œ๊ฐ€ ๋˜๋ฉฐ ์ž์‹ ์˜ ์ธ๋ฑ์Šค ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ๋œ๋‹ค. union์€ ๋‘ ๋…ธ๋“œ์˜ ๋Œ€ํ‘œ๋…ธ๋“œ๋ฅผ ์ผ์น˜์‹œํ‚ค๋Š” ์—ฐ์‚ฐ์ด๋‹ค. ์ด ๊ณผ์ •์—์„œ ์žฌ๊ท€์ ์œผ๋กœ ๋Œ€ํ‘œ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค. find๋Š” ์ž์‹ ์ด ์†ํ•œ ์ง‘ํ•ฉ์˜ ๋Œ€ํ‘œ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š” ์—ฐ์‚ฐ์ด๋‹ค. ์ด ๊ณผ์ •์ด ์ค‘์š”ํ•œ ์ด์œ ๋Š” ๋‹จ์ˆœํžˆ ๋…ธ๋“œ๋ฅผ ์ฐพ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๊ทธ๋ž˜ํ”„๋ฅผ ์ •๋ˆํ•˜๊ณ  ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ๋•Œ..

๐Ÿ€ Knowledge/์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ๋“ค

๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‹ค์–‘ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์žˆ๋‹ค. 1. ์—์ง€ ๋ฆฌ์ŠคํŠธ : ์—์ง€๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œํ˜„ : ์—ด์˜ ๊ฐฏ์ˆ˜๋ฅผ 2๊ฐœ๋ฅผ ๋‘๋ƒ, 3๊ฐœ๋ฅผ ๋‘๋ƒ์— ๋”ฐ๋ผ์„œ ๊ฐ€์ค‘์น˜๊ฐ€ ์œ ๋ฌด๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. : ๋ฒจ๋งŒ ํฌ๋“œ๋‚˜ ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์‚ฌ์šฉํ•˜๋ฉฐ, ๋…ธ๋“œ ์ค‘์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. 2. ์ธ์ ‘ ํ–‰๋ ฌ : ํ–‰๊ณผ ์—ด์— ๊ทธ๋ž˜ํ”„ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.(๊ฐ€๋ น, 1ํ–‰ 2์—ด์— ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์€ 1์—์„œ 2๋ฅผ ํ–ฅํ•˜๋Š” ์—์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ„) : ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ 1์„ ์ €์žฅํ•˜์ง€๋งŒ, ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. 3. ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ : ArrayList๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค. : ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋‹ค๋ฉด, ArrayList[5]์™€ ๊ฐ™์€ ์‹์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. : ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ฐ ArrayList์˜ ๊ฐ’์— ๋…ธ๋“œ๋ฅผ ๋‘์–ด ๊ฐ€์ค‘์น˜ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. : ๋…ธ..

TIlearn
'๐Ÿ€ Knowledge/์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก