Algorithm 2

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” Union-find & MST

Union-Find๊ฐœ๋…๊ทธ๋ž˜ํ”„์—์„œ ๋‘ ๋…ธ๋“œ๊ฐ€ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„์— ์†ํ•˜๋Š”์ง€(์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€)๋ฅผ ํŒ๋ณ„์ƒํ˜ธ ๋ฐฐํƒ€์  ์ง‘ํ•ฉ(Disjoint Set)์ด๋ผ๊ณ ๋„ ํ•จ์‹œ๊ฐ„ ๋ณต์žก๋„๋Œ€ํ‘œ ๋…ธ๋“œ(๋ฃจํŠธ) ์ฐพ๊ธฐ find : $O( \alpha(N))$ → ์‹ค์ „์—์„œ ๊ฑฐ์˜ $O(N)$์ง‘ํ•ฉ ํ•ฉ์น˜๊ธฐ union : $O( \alpha(N))$ → ์‹ค์ „์—์„œ ๊ฑฐ์˜ $O(N)$์ „์ฒด ์ฝ”๋“œdef find(a): if parent[a] != a: parent[a] = find(parent[a]) return parent[a]def union(a,b): pa, pb = find(a), find(b) if a Union-Find ๊ตฌ์„ฑํ•˜๋Š” ํ•จ์ˆ˜๋“คfind : ๋Œ€ํ‘œ ๋…ธ๋“œ(root) ์ฐพ๊ธฐdef find(a, b): if parent[a] !=..

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” Recap (DP &Dijkstra)

๐Ÿ“Recap Day: ์ด๋ฒˆ์ฃผ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ์ง„ํ–‰ํ–ˆ๋˜ ์ฃผ์ œ์˜ ๋ฌธ์ œ ์ค‘์—์„œ ๋ชป ํ‘ผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๊ณต์œ !1๏ธโƒฃ DP & DnC์ ํ™”์‹์ด ํ•„์š”ํ•œ ๋ฌธ์ œ๋Š” DP ํ˜น์€ DnC?!?์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜๊ณ  ๊ณ„์† ์ ํ™”์‹์„ ๋ณด๋ฉด DP ํ˜น์€ DnC๋ฅผ ๋– ์˜ฌ๋ ธ๋Š”๋ฐ,,๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ํ˜๋Ÿฌ๊ฐˆ ๋•Œ ๋ถ„ํ•  ์ •๋ณต,์ž‘์€ ๊ฐ’์„ ๊ตฌํ•ด ํฐ ๊ฐ’์— ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ DP๋ฅผ ํ”ํžˆ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐ ↑ ์ด ๋ง์„ ๋“ค์œผ๋‹ˆ,, ํ‹€๋ ธ์„์ง€๋„ ๋ชจ๋ฅธ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด๋”ฐ.. ๊ทธ๋ž˜์„œ GPTํ•œํ…Œ ๋ฌผ์–ด๋ด„DP์™€ DnC ์œ ํ˜•์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐ์ค€์„ ์„ธ์šฐ์ž๋ฉด ์ ํ™”์‹์ธ๊ฐ€?!? ๋ณด๋‹ค๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ๊ฐ€ ์„œ๋กœ ๋…๋ฆฝ์ ์ธ๊ฐ€!? ๊ฐ€ ๋” ์ž˜ ๋งž๋Š”๋‹ค๊ณ  ํ•จ..DP๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ๊ฐ€ ์ค‘๋ณต๋˜์–ด์„œ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์— ๋” ์ ํ•ฉํ•˜๊ณ  DnC๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ๊ฐ€ ๋…๋ฆฝ์ ์ผ ๋•Œ ๋” ์ ํ•ฉํ•˜๋‹ค๊ณ  ํ•จDP(Top-Down) vs D..