์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
V๊ฐ์ ์ ์ ๊ณผ E๊ฐ์ ๊ฐ์ ์ ๊ฐ์ง ๊ฐ์ค ๊ทธ๋ํ G์์ ํน์ ์ถ๋ฐ ์ ์ (S)์์๋ถํฐ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๐ ํน์ง ์์ ๊ฐ์ค์น๋ฅผ ๊ฐ๋ ๊ฐ์ ๋ ์กด์ฌ ๊ฐ๋ฅํ๋ค. ์์ ์ฌ์ดํด์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋ค. ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๊ธฐ ์ํด์๋ V-1๋ฒ E๊ฐ์ ๋ชจ๋ ๊ฐ์ ์ ํ์ธํ๋ค. ์์ ์ฌ์ดํด ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ธฐ ์ํด ํ ๋ฒ ๋ E๊ฐ์ ๊ฐ์ ์ ํ์ธํ๋ค. ์ด ์ฐ์ฐ ํ์ = VxE โ๏ธ ์๊ฐ ๋ณต์ก๋ = O(VE) V๋ฒ์งธ ๋ชจ๋ ๊ฐ์ ์ ํ์ธํ์ ๋ ๊ฑฐ๋ฆฌ๋ฐฐ์ด์ด ๊ฐฑ์ ๋์๋ค๋ฉด ๊ทธ๋ํ G๋ ์์ ์ฌ์ดํด์ ๊ฐ์ง๋ ๊ทธ๋ํ์ด๋ค. ์์ ๊ฐ์ด ์์ ๊ฐ์ค์น๋ฅผ ๊ฐ๊ณ ์๋ ๊ทธ๋ํ๊ฐ ์์ ๋, ๋ค์ต์คํธ๋ผ๋ก ์ ์ 1์์ ๋ชจ๋ ์ ์ ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํํ๋ค๋ฉด 1 โ 2 = 1 1 โ 2 โ 3 = 2 1 โ 2 โ 3 โ ..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
LCA๋ Lowest Common Ancestor์ ์ฝ์๋ก ์ต์ ๊ณตํต ์กฐ์์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ํธ๋ฆฌ๊ตฌ์กฐ์์ ์ฌ์ฉ๋๋ฉฐ ๋ ์ ์ u, v์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ณตํต ์กฐ์์ ์ฐพ์ผ๋ฉด ๋๋ค. ์ด ๊ทธ๋ํ์์ 13๋ฒ ์ ์ ๊ณผ 15๋ฒ ์ ์ ์ ์ต์๊ณตํต์กฐ์์ 5๋ฒ ์ ์ ์ด๋ค. 11๋ฒ ์ ์ ๊ณผ 13๋ฒ ์ ์ ์ ์ต์๊ณตํต์กฐ์์ 1๋ฒ ์ ์ ์ด๋ค. ์ด๋ฐ ์ํฉ์์ 12๋ฒ ์ ์ ๊ณผ 14๋ฒ ์ ์ ์ ์ต์๊ณตํต์กฐ์์ 12๋ฒ ์ ์ ์ด๋ค. ๐น๏ธ LCA ๊ณผ์ 1๏ธโฃ ์
๋ ฅ๋ฐ์ ์ ์ ๊ณผ ๊ฐ์ ์ผ๋ก ์๋ฐฉํฅ ๊ทธ๋ํ (ํธ๋ฆฌ๊ตฌ์กฐ) ๋ฅผ ์์ฑํ๋ค. 2๏ธโฃ BFS๋ DFS๋ฅผ ์ฌ์ฉํ์ฌ depth๋ฅผ, DP๋ฅผ ํ์ฉํ์ฌ parent ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ค. 3๏ธโฃ LCA(u, v) ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ u์ v์ ์ต์๊ณตํต์กฐ์์ ์ฐพ๋๋ค. u์ v ์ค์์ ๊น์ด๊ฐ ๋ ๊น์ ์ ์ ์ ์์ ๊น..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
Binary Search๋ ์ ๋ ฌ๋์ด ์๋ ๋ฆฌ์คํธ์์ ํ์ ๋ฒ์๋ฅผ ์ขํ๊ฐ๋ฉฐ ์ํ๋ ๊ฐ์ ์ป๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ฆฌ์คํธ๊ฐ ๋ฐ๋์ ์ ๋ ฌ๋์ด ์์ด์ผ ํ๋ฉฐ, 3๊ฐ์ ๋ณ์ (low, mid, high)๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ ํ์ํ๋ค. ์ค์๊ฐ(mid)์ ๊ธฐ์ค์ผ๋ก ๋น๊ตํ์ฌ low์ high ๊ฐ์ ์ ํ๊ณ , ์ด ๊ณผ์ ์ ๋ฐ๋ณตํด์ ๊ฐ์ ์ป์ด๋ด๋ฉด ๋๋ค. ํ์ ๋ฒ์๊ฐ ๋ฐ์ผ๋ก ์ค์ด๋ค๋ฉด์ start์ end ๊ฐ์ ์ ํ๋ ๊ณผ์ ์ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์ ์๊ฐ๋ณต์ก๋๊ฐ ๋ฎ๊ณ , ์์ฐจ์ ํ์๋ณด๋ค ๋น ๋ฅธ ํ์์ด ๊ฐ๋ฅํ๋ฏ๋ก ๋ฐฐ์ด์ ์์ ๊ฐ์๊ฐ ๋ง์ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค. ๐น๏ธ Binary Search ๊ณผ์ 1๏ธโฃ ๋ฐฐ์ด์ ์ค๊ฐ ๊ฐ์ ๊ณ์ฐํ์ฌ ์ฐพ๊ณ ์ ํ๋ ๊ฐ๊ณผ ๋น๊ตํ๋ค. ์ค๊ฐ ๊ฐ์ (low+high)/2 ๋ก ๊ณ์ฐํ๋ค. 2๏ธโฃ ์ค๊ฐ ๊ฐ์ด ์ฐพ๊ณ ์ ํ๋ ๊ฐ๋ณด๋ค ์๋ค๋ฉด ์ค๊ฐ๊ฐ๋ณด๋ค..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
V๊ฐ์ ์ ์ ๊ณผ E๊ฐ์ ๊ฐ์ ์ ๊ฐ์ง ๊ฐ์ค ๊ทธ๋ํ G์์ ๋ชจ๋ ์ ์ ์ฌ์ด์ ์ต๋จ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก (๋ชจ๋ ๋
ธ๋ ๊ฐ์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ) ์์ ์ฌ์ดํด์ด ์๋ ๊ทธ๋ํ ๋ด์ ๊ฐ ๋ชจ๋ ์ ์ ์์ ๊ฐ ๋ชจ๋ ์ ์ ์ ๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋๋ฐ ์ฌ์ฉ๋๋ค. ์์์ธ ๊ฐ์ค์น๋ฅผ ๊ฐ๋ ๊ฐ์ ์ด ์กด์ฌํด๋ ๋๋ค. ์ด๋ค ๋ ์ ์ ์ฌ์ด์ ์ต๋จ ๊ฒฝ๋ก๋ ์ด๋ค ๊ฒฝ์ ์ง(K)๋ฅผ ๊ฑฐ์น๊ฑฐ๋ ๊ฑฐ์น์ง ์๋ ๊ฒฝ๋ก ์ค ํ๋์ด๋ค. ex). ์ ์ A์ ์ ์ B ์ฌ์ด์ ์ต๋จ ๊ฒฝ๋ก = A-B ๋๋ A-K-B ๋ง์ฝ, ๊ฒฝ์ ์ง๋ฅผ ๊ฑฐ์น๋ค๋ฉด ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ด๋ฃจ๋ ๋ถ๋ถ ๊ฒฝ๋ก ๋ํ ์ต๋จ ๊ฒฝ๋ก์ด๋ค. ex). A-K์ K-B ๋ํ ์ต๋จ๊ฒฝ๋ก ๐ ํน์ง ์ํ๋ง ์๋ค๋ฉด ์์ ๊ฐ์ค์น๋ ๊ฐ๋ฅํ๋ค ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ ๊ณํ๋ฒ(DP)์ผ๋ก ์ ๊ทผํ๋ค. โ๏ธ ์๊ฐ๋ณต์ก๋ : θ(V³) (V๋ ๋
ธ๋..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
๊ทธ๋ํ (ํธ๋ฆฌ) ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ ๋
ธ๋๊ฐ ๊ฐ์ ๊ทธ๋ํ์ ์ํด์๋์ง ํ๋ณ Union ์ฐ์ฐ & Find ์ฐ์ฐ union(x, y) : ๋
ธ๋๋ฅผ ํฉ์น๋ ์ฐ์ฐ find(x) : x๊ฐ ์ด๋ ๊ทธ๋ํ์ ์ํด ์๋์ง ํ๋ณํ๋ ์ฐ์ฐ (๋
ธ๋์ ๋ฃจํธ ๋
ธ๋ ํ์) ๐น๏ธ ์ ๋์จ ํ์ธ๋ ๊ณผ์ ํ์ฌ 5๊ฐ์ ๋
ธ๋๋ ์๋ก ์ฐ๊ฒฐ๋์ด์์ง ์์ ์ํ์ด๋ฏ๋ก ๋ถ๋ชจ๋ ์๊ธฐ ์์ ์ ๊ฐ๋ฆฌํค๊ณ ์๋ค. (๋ถ๋ชจ ๋
ธ๋ ์ด๊ธฐํ) x๋ ๋
ธ๋ ๋ฒํธ์ด๊ณ , parent[x]๋ x๊ฐ ์ด๋ค ๋ถ๋ชจ ๋
ธ๋์ ์ํด ์๋์ง ๋ํ๋ธ๋ค. 1๏ธโฃ union(1, 2) ๋
ธ๋ 1๊ณผ ๋
ธ๋ 2๋ฅผ ํฉ์น๋ค. ๋
ธ๋ 2์ ๋ถ๋ชจ ๋
ธ๋๋ 1์ด ๋์๋ค. parent[2] = 1 2๏ธโฃ union(3, 4) / union(3, 5) ๋
ธ๋ 3๊ณผ ๋
ธ๋ 4๋ฅผ ํฉ์น๊ณ , ๋
ธ๋ 3๊ณผ ๋
ธ๋ 5๋ฅผ ํฉ์น๋ค. ๋
ธ๋ 4์ ๋
ธ..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
DP(๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ)๋ฅผ ํ์ฉํ ๋ํ์ ์ธ ์ต๋จ ๊ฒฝ๋ก ํ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ํ๋์ ์ ์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์์ ์ฌ์ฉ๋๋ค. ์ต๋จ ๊ฑฐ๋ฆฌ๋ ์ฌ๋ฌ ๊ฐ์ง ์ต๋จ ๊ฑฐ๋ฆฌ๋ก ์ด๋ฃจ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ์์ ๋ฌธ์ ๊ฐ ํฐ ๋ฌธ์ ์ ๋ถ๋ถ ์งํฉ์ ์ํด์๋ค๊ณ ๋ณผ ์ ์๋ค. ํ๋์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ๋ ๊ทธ ์ด์ ๊น์ง ๊ตฌํ๋ ์ต๋จ ๊ฑฐ๋ฆฌ ์ ๋ณด๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ํน์ง์ด ์๋ค. ๐น๏ธ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ๊ณผ์ ์ถ๋ฐ ๋
ธ๋ ์ค์ ์ถ๋ฐ ๋
ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ ๋
ธ๋์ ์ต์ ๋น์ฉ ์ ์ฅ ๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋ ์ค์์ ๊ฐ์ฅ ๋น์ฉ์ด ์ ์ ๋
ธ๋ ์ ํ ํด๋น ๋
ธ๋ ๊ฑฐ์ณ์ ํน์ ํ ๋
ธ๋๋ก ๊ฐ๋ ๊ฒฝ์ฐ ๊ณ ๋ คํ์ฌ ์ต์ ๋น์ฉ ๊ฐฑ์ 3๏ธโฃ, 4๏ธโฃ๋ฒ ๋ฐ๋ณต ๊ธฐ๋ณธ์ ์ธ ๋ค์ต์คํธ๋ผ - ์ ํํ์ public class Main{ static int INF = 10000..