Algorithm


์ฌ์ ๋ณด์์ง๋ง ์๊ฐ๋ณด๋ค ๊น๋ค๋ก์ด ๋ฌธ์ ์๋ค. 0๋ถํฐ ์์ํด์ N๋ฒ์งธ ๊ฐ์ํ๋ ์๋ฅผ ์ฐพ๋ ๋ฌธ์ . ์ฐ์ ๋ฌธ์ ์๋ ๋์์๋ค์ํผ 0์ 0๋ฒ์งธ ๊ฐ์ํ๋ ์, 1์ 1๋ฒ์งธ ๊ฐ์ํ๋ ์์ด๋ฏ๋ก 10๋ฏธ๋ง์ ์ ๋ ฅ์ ์๊ธฐ ์์ ์ด n๋ฒ์งธ ๊ฐ์ํ๋ ์๊ฐ ๋๋ค. // 10๋ณด๋ค ์์ ์๋ ๋ฌด์กฐ๊ฑด ๊ฐ์ํ๋ ์ if(N < 10) { System.out.println(N); return; } ๊ทธ๋ฌ๋ฉด N์ด 10 ์ด์์ธ ์์ ๋ํด์๋ง ๋ช๋ฒ์งธ ๊ฐ์ํ๋ ์์ธ์ง ์๋์ง ํ์ธํ๋ฉด ๋๋ค. ์ฐ์ ์ด๋ค ์๊ฐ ๊ฐ์ํ๋ ์์ธ์ง ์๋์ง๋ฅผ ํ์ธํ๋ ์ฝ๋๊ฐ ํ์ํ๋ค. ๋๋ ์ผ์์๋ฆฌ๋ถํฐ ๋ง์ง๋ง์๋ฆฌ๊น์ง ์ซ์๊ฐ ์ปค์ง์ง ์์ผ๋ฉด false๊ฐ์, ์ ๋ถ ๋ค ์ปค์ง๋ ์ซ์์์ผ๋ฉด true๊ฐ์ ๋ฐํํ์๋ค. // num๊ฐ์ 10์ด์์ด๋ค. public static boolean is..


์ด ์ ํฌ์คํ ์๋ ์ฌ๋ ธ์ง๋ง ๊ทธ๋ํ์์ ์ต์๋น์ฉ๋ฌธ์ ๋ ๋ ๊ฐ์ง ์ ํ์ด ์๋ค. 1. ๋ชจ๋ ์ ์ ์ ์ฐ๊ฒฐํ๋ ๊ฐ์ ๋ค์ ๊ฐ์ค์น์ ํฉ์ด ์ต์๊ฐ ๋๋ ํธ๋ฆฌ → ์ต์์ ์ฅํธ๋ฆฌ(MST) 2. ๋ ์ ์ ์ฌ์ด์ ์ต์ ๋น์ฉ์ ๊ฒฝ๋ก ์ฐพ๊ธฐ → ์ต๋จ๊ฒฝ๋ก ์ด๋ฒ ํฌ์คํ ์์๋ ์ต๋จ๊ฒฝ๋ก ์ค์์ Dijkstra ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ฆฌํ ๊ฒ์ด๋ค. ์ต๋จ ๊ฒฝ๋ก๋? ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ์๋ ๊ทธ๋ํ์์ ๋ ์ ์ ์ฌ์ด์ ๊ฒฝ๋ก๋ค ์ค ๊ฐ์ ์ ๊ฐ์ค์น์ ํฉ์ด ์ต์์ธ ๊ฒฝ๋ก๋ฅผ ๋งํ๋ค.(๋ชจ๋ ์ ์ ์ ๋ฐฉ๋ฌธํ์ง ์์๋ ๋๋ค.) ๋ง์ฝ ๊ฐ์ค์น๊ฐ ์๋ ๊ทธ๋ํ์์์ ์ต๋จ๊ฒฝ๋ก๋ ๊ฑฐ์ณ์ค๋ ๊ฐ์ ์์ ์ต์๊ฐ์ ๊ตฌํ๋ฉด ๋๋ค. ์ฐธ๊ณ : ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ์ ์๋์ ๊ฐ๋ค. ํ๋์ ์์ ์ ์ ์์ ๋ ์ ์ ๊น์ง์ ์ต๋จ๊ฒฝ๋ก Dijkstra ์๊ณ ๋ฆฌ์ฆ(ํ์๊ธฐ๋ฒ) : ์์ ๊ฐ์ค์น๋ฅผ ํ์ฉํ์ง ์์. Bellm..


๊ทธ๋ฅ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ด์ง๋ง ๊ฐ์ ์ฑ๋ณ์ ๋ํ๊ต๋ ์ฐ๊ฒฐ๋๋ฉด ์๋๋ค. ๋ฐ๋ผ์ ๋ํ๊ต์ ์ฑ๋ณ์ ํ์ธํ ์ ์๋ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , unionSet์ ํ ๋ ๋จผ์ ๋ํ๊ต ์ฑ๋ณ์ด ๊ฐ์ผ๋ฉด false๋ฅผ ๋ฐํํ๋ค. public static boolean unionSet(int x, int y) { if(gender[x] == gender[y]) return false;// ๊ฐ์ ์ฑ๋ณ์ ๋ํ๊ต์ธ ๊ฒฝ์ฐ๋ unionํ์ง ์๋๋ค. int xRoot = findSet(x); int yRoot = findSet(y); if(xRoot == yRoot) return false; parents[yRoot] = xRoot; return true; } ๊ฐ๋จํ ๋ฌธ์ ์๋ค...!! ์ฝ๋๋ ์๋์ ๊ฐ๋ค. public class BJ_146..


๋ฌธ์ ๋ฅผ ์ฝ๊ณ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ ๊ทผํด์ผ ๋ง๋ ๊ฑด์ง ๋ง์ด ๊ณ ๋ฏผํ๋ค. ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ → ์ ๋ ฅ์ ์ด๋ฏธ ์ฐ๊ฒฐ๋ ๊ฐ์ ๋ช ๊ฐ๊ฐ ์ฃผ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ์๋ก์ ์งํฉ์ ์ด์ฉํด์ผ ํ ๊ฑฐ ๊ฐ์. ํ์ง๋ง ์ด๋ค ๊ฐ์ ์ด ์กด์ฌํ๋ ์ง ์ ๋ณด๊ฐ ์์ผ๋ฏ๋ก ๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํ ์ ์๋ค. ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ → ์ด๋ฏธ ์ฐ๊ฒฐ๋ ์ ์ ๋ค์ ๊ฑฐ๋ฆฌ๋ฅผ 0, ์๋ ์ ์ ๋ค์ 2์ฐจ์ ์ขํ๊ณ์์ ๊ฑฐ๋ฆฌ๋ก ์ฒ๋ฆฌ / ์ด๋ฏธ ์ฐ๊ฒฐ๋ ์ ์ ๋ค์ด ์กด์ฌํ๋ฏ๋ก ์๋ก์ ์งํฉ์ ์ด์ฉํด๋ณผ ์๊ฐ์ด์๋ค. ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ์์ minEdge ๋ฐฐ์ด์ ์ ์ฅ ํธ๋ฆฌ์์ ๋ฐฉ๋ฌธํ์ง ์์ ์ ์ ๊น์ง์ ์ต์ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅํ๋ค. ํ์ง๋ง ์ ์ฅ ํธ๋ฆฌ์ ์ด๋ค ์ ์ ์ผ๋ก๋ถํฐ ์ต์์ธ์ง๋ ์ ์ ์๋ค. ์ ๋ ฅ์ผ๋ก ์ด๋ฏธ ์ฐ๊ฒฐ๋ ์ ์ ๋ค์ด ์กด์ฌํ๋๋ฐ ๋๋จธ์ง ์ ์ ๋ค์ด ์ ์ฐ๊ฒฐ๋ ์ ์ ๋ค์ union ํ๋ ค๋ฉด ์ด๋ค ์ ์ ์ผ๋ก๋ถํฐ ์ต์์ธ ..


์ ๋ ฅ์ ํํ๊ฐ ๊ฐ์ ์ ๋ณด๋ฅผ ์ฃผ๊ธฐ๋๋ฌธ์ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์๊ฐํ๋ค. ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ๊ฐ์ฅ ์ฒ์ ๋ ์๊ฐ์ ์ด๋ค ๊ธฐ์ค์ผ๋ก ๋ ๊ฐ์ ๋ถ๋ฆฌ๋ ๋ง์๋ก ๋ถํ ํ ๊น...? ์๋ค. ๊ทธ๋์ ์ง๋ค์ ๋ถ๋ถ์งํฉ์ ๊ตฌํด์ผํ๋...? → ์ ๋ ฅ์ด ๋๋ฌด ์ปค์ ๋ฐฑํผ ์๊ฐ์ด๊ณผ์ด๊ณ ๊ฐ์ ๋ค์ ์ ๋ ฌํ๊ณ ๊ฐ์ฅ ์์ ๋ ๊ฐ์ ๊ฐ์ ์ ๋ ๊ฐ์ ๋ง์๋ก ์ก์๊น? → 1. ๋ ๊ฐ์ ๊ฐ์ ์ด ๊ฐ์ ์ง์ ๊ฐ๋ฆฌํฌ ์ ๋ ์๊ธฐ ๋๋ฌธ์ ์๋ ๋ฏ... ๋ฌธ์ ๋ฅผ ๋ค์ ํ ๋ฒ ์ดํด๋ณด๋ ๋ง์์๋ ์ง์ด ํ๋ ์ด์ ์์ด์ผ ํ๋ค.๊ฐ ๋์ ๋ค์ด์๋ค. ์ด ๋ง์ ๋ง์์๋ ์ง ํ๋๋ง ์์ผ๋ฉด ๋๊ฒ ๊ตฌ๋... ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ ๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ ๊ทธ ์ค์์ ์ฌ์ดํด์ด ์์๊ธฐ๋๋ก (์ ์ -1)๊ฐ์ ๊ฐ์ ๋ค์ ์ ํํ๋ฉด ๋ชจ๋ ์ ์ ๋ค์ด ์ด์ด์ง๋ค. ํ์ง๋ง ์ฌ๊ธฐ์ (์ ์ -2)๊ฐ์ ๊ฐ์ ๋ค์ ์ฐ๊ฒฐ..


๊ทธ๋ํ์์์ ์ต์๋น์ฉ๋ฌธ์ ๋ 2๊ฐ์ง๊ฐ ์๋ค. 1. ๋ชจ๋ ์ ์ ์ ์ฐ๊ฒฐํ๋ ๊ฐ์ ๋ค์ ๊ฐ์ค์น์ ํฉ์ด ์ต์๊ฐ ๋๋ ํธ๋ฆฌ → ์ต์์ ์ฅํธ๋ฆฌ 2. ๋ ์ ์ ์ฌ์ด์ ์ต์ ๋น์ฉ์ ๊ฒฝ๋ก ์ฐพ๊ธฐ → ์ต๋จ๊ฒฝ๋ก(Dijkstra ์๊ณ ๋ฆฌ์ฆ) ์ด๋ฒ ํฌ์คํ ์์๋ ์ต์์ ์ฅํธ๋ฆฌ๋ฅผ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค... ์ฐ์ ์ ์ฅํธ๋ฆฌ๋? N๊ฐ์ ์ ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌดํฅ ๊ทธ๋ํ์์ N๊ฐ์ ์ ์ ๊ณผ n-1๊ฐ์ ๊ฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ํธ๋ฆฌ๋ฅผ ๋งํ๋ค. ๊ทธ๋ผ ์ต์์ ์ฅํธ๋ฆฌ๋? ๋ฌดํฅ ๊ฐ์ค์น ๊ทธ๋ํ์์ ์ ์ฅ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ์ ๋ค์ ๊ฐ์ค์น๋ค์ ์ดํฉ์ด ์ต์์ธ ์ ์ฅ ํธ๋ฆฌ ์ต์์ ์ฅํธ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด 2๊ฐ์ง ์กด์ฌํ๋ค. 1. KRUSKAL(ํฌ๋ฃจ์ค์นผ) ์๊ณ ๋ฆฌ์ฆ 2. PRIM(ํ๋ฆผ) ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ ์ ํ๋์ฉ ์ ํํด์ MST๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ (์ ๊ทผ๋ฐฉ๋ฒ : ๊ฐ์ ์ค์ฌ →..


์๋ก์ ์งํฉ์ด๋? ์๋ก์ ๋๋ ์ํธ๋ฐฐํ ์งํฉ๋ค์ ์๋ก ์ค๋ณต๋ ์์๊ฐ ์๋ ์งํฉ๋ค์ ๋งํ๋ค. → ๊ต์งํฉ์ด ์๋ค. ์งํฉ์ ์ํ ์์์ ๋ฉค๋ฒ ํ๋๋ฅผ ํน์ ํด์ ๋ํ์(representative)๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ ํตํด ๊ฐ ์งํฉ๋ค์ ๊ตฌ๋ถํ๋ค. ์๋ก์ ์งํฉ ์ฐ์ฐ 1. MakeSet(x) 2. FindSet(x) 3. Union(x, y) ์์ ๊ฐ์ด ์๋ก์์ธ ์งํฉ 5๊ฐ๊ฐ ์๋ค๊ณ ํ์. → {A} , {B}, {C}, {D}, {E} 1. MakeSet(x) ์ฐ์ฐ : ๋ชจ๋ ์์๋ฅผ ๊ฐ๊ฐ์ ์งํฉ์ผ๋ก ๋ง๋๋ ํจ์ ์์๋ ธ๋๊ฐ ์์ผ๋ฉด ๋ถ๋ชจ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ณ , ๋ถ๋ชจ ๋ ธ๋๊ฐ ์๋(์์๊ฐ 1๊ฐ์ผ๋) ๊ฒฝ์ฐ์๋ ๋ํ์์ธ ์๊ธฐ ์์ ์ ๊ฐ๋ฆฌํจ๋ค. 2. UnionSet(x, y) ์ฐ์ฐ : x์ y๋ฅผ ํ๋์ ์งํฉ์ผ๋ก ํฉ์น๋ ํจ์ - unionSet..


๋ฉํฐํญ์ ํ๋ฌ๊ทธ ๋นผ๋ ํ์๋ฅผ ์ต์ํํ๋ ๋ฌธ์ !! ์ฒ์์ ์๊ฐํ ๋ก์ง ๋ฉํฐํญ์ ๋น์ด์๋ ์๋ฆฌ๊ฐ ์์ผ๋ฉด : ๋ฉํฐํญ์ ์ถ๊ฐ ๋ฉํฐํญ์ ๋น์ด์๋ ์๋ฆฌ๊ฐ ์์ผ๋ฉด ์ด๋ฏธ ๊ฝํ์๋ ๊ฒฝ์ฐ : ๋ฌด์ ๋ฉํฐํญ์ ๊ฝํ์๋ ๊ธฐ๊ธฐ๋ค์ ์ฌ์ฉ๋น๋๊ฐ ์ ์ผ ๋ฎ์ ๊ธฐ๊ธฐ๋ฅผ ๋บ๋ค. ํ์ง๋ง ์ด ๊ฒฝ์ฐ์๋ ์ ๋ ฅ์ด ์๋์ ๊ฐ์ผ๋ฉด 2 5 3 3 1 4 5 ๋ ๋ฒ์งธ๋ก ๋ค์ด์จ ๊ธฐ๊ธฐ3์ด 2-1๋ก ๋น ์ง๋ ๊ฒ ์๋ 1๋ฒ์ผ๋ก ๋น ์ง๊ฒ ๋๋ฏ๋ก ์ค๋ฅ... ๋ ๋ฒ์งธ๋ก ์๊ฐํ ๋ก์ง ๋ฉํฐํญ์ด ๋น์ด์์ง ์๊ณ ์ด๋ฏธ ๊ฝํ์๋ ๊ฒฝ์ฐ : ๋ฌด์ ๋ฉํฐํญ์ ๋น์ด์๋ ์๋ฆฌ๊ฐ ์์ผ๋ฉด : ๋ฉํฐํญ์ ์ถ๊ฐ ๋ฉํฐํญ์ ๋น์ด์๋ ์๋ฆฌ๊ฐ ์์ผ๋ฉด ๋ฉํฐํญ์ ๊ฝํ์๋ ๊ธฐ๊ธฐ๋ค์ ์ฌ์ฉ๋น๋๊ฐ ์ ์ผ ๋ฎ์ ๊ธฐ๊ธฐ๋ฅผ ๋บ๋ค. ํ์ง๋ง... ์ด ๊ฒฝ์ฐ์๋ ์ ๋ ฅ์ด ์๋์ ๊ฐ์ผ๋ฉด 2 7 2 3 1 2 1 2 3 3 3 ์ฒ์ ๊ธฐ๊ธฐ1์ด..


์์ฃผ์์ฃผ์์ฃผ ์ง์ฆ๋๊ฒ ํ๋ ๋ฌธ์ ..^^.. --๋ฆฌ๋ทฐ๋ ๋์ค์ ์ถ๊ฐ-- import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class BJ_11725 { static LinkedList[] node; // ์ธ์ ๋ฆฌ์คํธ๋ก ๊ฐ์ ๋ผ๋ฆฌ ์ฐ๊ฒฐ๋ ๋ ธ๋ ์ ๋ณด static int[] parentNode; // 2๋ถํฐ N๊น์ง ๋ถ๋ชจ๋ ธ๋ ์ ๋ณด static int N; // ์ ๋ ฅ๋ฐ๋ ์ public static void main(String[] arg..