์ ์ฒด ๊ธ ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [์๊ณ ๋ฆฌ์ฆ] ์ต์ ์คํจ๋ ํธ๋ฆฌ_ Kruskal & Prim ์ต์ ์คํจ๋ ํธ๋ฆฌ (MST, Minimum Spanning Tree) ์คํจ๋ ํธ๋ฆฌ๋, ๊ทธ๋ํ์์ ์ํ ์์ด ๋ชจ๋ ์ ์ ์ ์๋ ๋ถ๋ถ ๊ทธ๋ํ๋ฅผ ์๋ฏธํ๋ค. ์ต์ ์คํจ๋ ํธ๋ฆฌ๋, ์ด๋ฌํ ์คํจ๋ ํธ๋ฆฌ ์ค์์ ๊ฐ์ ์ ๊ฐ์ค์น์ ํฉ์ด ๊ฐ์ฅ ์์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค. ์ด๋ฌํ ์ต์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํฌ๋ฃจ์ค์นผ(Kruskal)๊ณผ ํ๋ฆผ(Prim) ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค. ํฌ๋ฃจ์ค์นผ (Kruskal) ์๊ณ ๋ฆฌ์ฆ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ๊ฐ์ ์ค์์ ๊ฐ์ฅ ๊ฐ์ค์น๊ฐ ์์ ๊ฐ์ ๋ถํฐ ์ฐ๊ฒฐํด ์ฃผ๋ฉด์ ์ต์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ฐ์ ๋ค์ ์ฐ๊ฒฐํ๋ฉด์ ์ํ์ด ๋ฐ์ํ๋ค๋ฉด ํด๋น ๊ฐ์ ์ ๋ฒ๋ฆฌ๊ณ ๋ค์ ๊ฐ์ ์ ์ ํํ๊ฒ ๋๋๋ฐ ์ด ๋, Union-Find ์ฐ์ฐ์ ์ฌ์ฉํ๋ค. ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ ๋ค์ ๊ฐ์ค์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค. .. ๋๋ณด๊ธฐ [์ฑ ์ ๋ฆฌ] ๊ฐ์ฒด ์งํฅ์ ์ฌ์ค๊ณผ ์คํด http://www.yes24.com/Product/Goods/18249021 ๊ฐ์ฒด ์งํฅ์ ์ฌ์ค๊ณผ ์คํด๋ฅผ ์ฝ๊ณ ๋๋ฆ๋๋ก ์ ๋ฆฌํ๋๋ฐ, ๋ง์ ์ ๋ฆฌํ๋ ค๊ณ ๋ณด๋ ๊ต์ฅํ ์ด๋ ค์ ๋ค... ๋ฉ๋ชจํ๋ฉด์ ์ฑ ์ ์ฝ๋ ๋ฐฉ์์ผ๋ก ํด๋ด์ผ ํ ๊ฒ ๊ฐ๋ค. ํ๊ต์์ ๋ฐฐ์ ๋ ๊ฐ์ฒด์งํฅ๊ณผ ๋น๊ตํ๋ฉด์ ์ฑ ์ ์ฝ์ผ๋๊น ๋ ์ฌ๋ฐ๊ณ ์ฝ๊ฒ ์ฝ์๋ ๊ฒ ๊ฐ๊ณ , ์ฌ๋๋ค์ด ๋งํ๋ TDD์ DDD๊ฐ ์ ์ค์ํ์ง๋ฅผ ์๊ฒ๋ ๊ณ๊ธฐ๊ฐ ๋์๋ค. ๊ฐ๋ 1. “๊ฐ์ฒด์งํฅ์ด๋ ์ค์ธ๊ณ๋ฅผ ์ง์ ์ ์ด๊ณ ์ง๊ด์ ์ผ๋ก ๋ชจ๋ธ๋งํ ์ ์๋ ํจ๋ฌ๋ค์” ์ด๋ผ๋ ์ค๋ช ์ ๊ฐ์ฒด์งํฅ์ ๊ธฐ๋ฐ์ ์ด๋ฃจ๋ ์ฒ ํ์ ์ธ ๊ฐ๋ ์ ์ค๋ช ํ๋๋ฐ๋ ์ ํฉํ์ง๋ง ์ ์ฐํ๊ณ ์ค์ฉ์ ์ธ ๊ด์ ์์ ์ค๋ช ํ๊ธฐ์๋ ์ ํฉํ์ง์๋ค. ์ค์ ๊ฐ์ฒด์งํฅ์ ๋ชฉํ = ์๋ก์ด ์ธ๊ณ๋ฅผ ์ฐฝ์กฐํ๋ ๊ฒ์ด๋ค. ๊ฐ์ฒด์งํฅ์์ ๊ฐ์ฅ ์ค์ํ 3๊ฐ์ง ๊ฐ๋ = ํ๋ ฅ, ์ญํ ,.. ๋๋ณด๊ธฐ [Algorithm/Java][๋ฐฑ์ค] 1197๋ฒ ์ต์ ์คํจ๋ ํธ๋ฆฌ [BOJ] 1197๋ฒ ์ต์ ์คํจ๋ ํธ๋ฆฌ https://www.acmicpc.net/problem/1197 ๋ฌธ์ ์ ๊ทผ ๋ชจ๋ ์ ์ ์ ์ต์ ๊ฐ์ผ๋ก ์ํํ ์ ์๋ ํธ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค. ๋ํ์ ์ผ๋ก Kruskal๊ณผ Prim ์๊ณ ๋ฆฌ์ฆ์ด ์๊ธฐ ๋๋ฌธ์ ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ๊ตฌํํ์๋ค. Code Kruskal ์๊ณ ๋ฆฌ์ฆ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; class Edge implements Comparable { int from; int to; int cost; public Edg.. ๋๋ณด๊ธฐ [์๊ณ ๋ฆฌ์ฆ] ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ _๋ค์ต์คํธ๋ผ & ๋ฒจ๋งํฌ๋ ๋ค์ต์คํธ๋ผ & ๋ฒจ๋งํฌ๋ ์ด ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ทธ๋ํ์์ ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ ? ์ต๋จ ๊ฒฝ๋ก๋ ๊ทธ๋ํ์์ ๊ฐ์ ์ ๊ฐ์ค์น์ ํฉ์ด ์ต์๊ฐ ๋๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์์ง๋ง, ๋ค์ต์คํธ๋ผ์ ๋ฒจ๋งํฌ๋๋ฅผ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ(Dijkstra Algorithm) ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๊ทธ๋ํ์์ ์์ ๊ฐ์ค์น๊ฐ ์์ ๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ์ ์๋ค. V๊ฐ์ ์ ์ ๊ณผ ์์ ๊ฐ์ค์น๋ฅผ ๊ฐ์ง E๊ฐ์ ๊ฐ์ ์ ๊ฐ์ง ๊ทธ๋ํ์์ ์ถ๋ฐ ์ ์ ์ผ๋ก๋ถํฐ ๋ชจ๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ์ ์๋ค. ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ์ด ์งํ๋๋ค. ํ์ฌ ์ ์ ์ ์ฐ๊ฒฐ๋์ด ์๋ ์ ์ ๋ค์ ๋ชจ๋ ๋ณธ๋ค. ํ์ฌ ์ ์ ๊ณผ ์ฐ๊ฒฐ๋๋ ๋ค์ ์ ์ ์ผ๋ก์ ๊ฑฐ๋ฆฌ์ ์์ ์ ์ ๊ณผ ํ์ฌ ์ ์ ๊น์ง์ ์ต๋จ ๊ฑฐ.. ๋๋ณด๊ธฐ [Algorithm/Java][๋ฐฑ์ค] 1916๋ฒ ์ต์๋น์ฉ ๊ตฌํ๊ธฐ [BOJ] 1916๋ฒ ์ต์๋น์ฉ ๊ตฌํ๊ธฐ https://www.acmicpc.net/problem/1916 ๋ฌธ์ ์ ๊ทผ ์์ ๊ฐ์ค์น๋ฅผ ๊ฐ์ง ๊ฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ๊ทธ๋ํ์์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ฌ์ ๋ค์ต์คํธ๋ผ์ ๋ฒจ๋งํฌ๋ ์๊ณ ๋ฆฌ์ฆ 2๊ฐ๋ฅผ ๋ชจ๋ ์ ์ฉํด์ ๊ตฌํํ๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํด์ ์๊ฐ๋ณต์ก๋๋ฅผ ์ค์๊ณ , ๋ค์ต์คํธ๋ผ์ ๋ฒจ๋งํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํฌ์คํธ์ ์ ๋ฆฌํ๋ค. [์๊ณ ๋ฆฌ์ฆ] ๋ค์ต์คํธ๋ผ & ๋ฒจ๋งํฌ๋ Code ๋ค์ต์คํธ๋ผ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; class Node implements Comparable { int to; int .. ๋๋ณด๊ธฐ [์๊ณ ๋ฆฌ์ฆ] ํฌ ํฌ์ธํฐ & ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ํฌ ํฌ์ธํฐ & ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์๊ณ ๋ฆฌ์ฆ 1์ฐจ์ ๋ฐฐ์ด์ 2ํ ์ด์ ๋ฐ๋ณต์ ์ผ๋ก ํ์์ ํด์ผํ ๊ฒฝ์ฐ ๋จ์ํ๊ฒ ํ๋ค๋ฉด O(N^2) ์ด์ ์๊ฐ ๋ณต์ก๋๊ฐ ๊ฑธ๋ฆฌ์ง๋ง ํฌ ํฌ์ธํฐ์ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ๋ถ๋ถ ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ์๊ฐ ๋ณต์ก๋๋ฅผ O(N)์ผ๋ก ์ค์ผ ์ ์๋ ๊ณตํต์ ์ด ์๋ค. ํฌ ํฌ์ธํฐ๋ ๋ถ๋ถ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ๋ณํ ์ ์์ง๋ง, ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ ๋ถ๋ถ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ๊ณ ์ ์ ์ด๋ผ๋ ์ฐจ์ด์ ์ด ์๋ค. ํฌ ํฌ์ธํฐ(Two Pointer) ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ 1์ฐจ์ ๋ฐฐ์ด์์ ๊ฐ๊ฐ ๋ค๋ฅธ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ 2๊ฐ์ ํฌ์ธํฐ๋ฅผ ์กฐ์ํด๊ฐ๋ฉด์ ์ํ๋ ๊ฒ์ ์ป๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ด๋ฌํ ํน์ฑ ๋๋ฌธ์ ํฌ ํฌ์ธํฐ๋ ์ฐ์๋๊ณ ๊ธธ์ด๊ฐ ๊ฐ๋ณ์ ์ธ ๋ถ๋ถ ๋ฐฐ์ด๋ค์ ํ์ฉํ์ฌ ํน์ ์กฐ๊ฑด์ ์ผ์น์ํค๋ ๋ฌธ์ ์ ์ ์ฉ์ํฌ ์ ์๋ค. ํฌ ํฌ์ธํฐ๋ก ํด๊ฒฐํด์ผ.. ๋๋ณด๊ธฐ [Algorithm/Java][๋ฐฑ์ค] 1806๋ฒ ๋ถ๋ถํฉ [BOJ] 1806๋ฒ ๋ถ๋ถํฉ https://www.acmicpc.net/problem/1806 ๋ฌธ์ ์ ๊ทผ ํฌ ํฌ์ธํฐ๋ฅผ ์ด์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์๋ค. deque์ ์ด๋ถ ํ์์ ์ด์ฉํด์๋ ํ ์ ์๋ค๊ณ ํ๋๋ฐ ๋ถ๋ฅ๊ฐ ํฌ ํฌ์ธํฐ๋ผ์ ํฌ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํด์ ํ์๋ค. start์ end์ธ ๋ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๊ณ sum์ด t(๋ชฉํ ๊ฐ)๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด end๋ฅผ +1ํด์ ํ๊ฐ๋ฅผ ๋ ๋ํ๋๋ก ํ๊ณ , sum์ด t(๋ชฉํ ๊ฐ)๋ณด๋ค ํฌ๋ฉด start๋ฅผ +1 ํด์ ํฉ์์ ํ๊ฐ๋ฅผ ๋นผ์ ๋ชฉํ ๊ฐ์ ์ ๊ทผํ๋๋ก ํ๋ค. ํฌ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด O(N)์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๊ฒ ๋๋ ์ฅ์ ์ด ์๋ค. Code import java.io.BufferedReader; import java.io.IOException; import java.io.. ๋๋ณด๊ธฐ [Algorithm/Java][๋ฐฑ์ค] 1700๋ฒ ๋ฉํฐํญ ์ค์ผ์ค๋ง [BOJ] 1700๋ฒ ๋ฉํฐํญ ์ค์ผ์ค๋ง https://www.acmicpc.net/problem/1700 ๋ฌธ์ ์ ๊ทผ ์์ ์ ์ด์์ฒด์ ์๊ฐ์ ๋ฐฐ์ ๋ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น์ทํด์ ์ฝ๊ฒ ํ ์ ์์๋ค. ๋ฉํฐํญ์ ์๋ฆฌ๊ฐ ์๊ฑฐ๋, ์ด๋ฏธ ๊ฝํ์์ ๋๋ ๊ณ ๋ คํ ๊ฒ ์์ด ๊ทธ๋ฅ ๊ฝ๊ฑฐ๋ ๋์ด๊ฐ๋ฉด ๋์ง๋ง ์๋ฆฌ๊ฐ ์์๋ ๊ณ ๋ คํด์ผ ๋ ๊ฒฝ์ฐ์ ์๊ฐ ์๋ค. ๊ฒฝ์ฐ์ ์๋ฅผ ์ ๋ฆฌํด ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. ๋ฉํฐํญ์ ์๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฏธ ๋ฉํฐํญ์ ๊ฝํ ์๋ ๊ฒฝ์ฐ ๋ฉํฐํญ์ ์๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ 3.1. ์ฌ์ฉํ์ง ์์ ์ ์๊ธฐ๊ธฐ๊ฐ ๊ฝํ ์๋ ๊ฒฝ์ฐ 3.2. ๋ชจ๋ ์ ์๊ธฐ๊ธฐ๊ฐ ๋ค์ ์ฌ์ฉํ ์ ์๊ธฐ๊ธฐ์ธ ๊ฒฝ์ฐ ์ฌ์ฉํ์ง ์์ ์ ์๊ธฐ๊ธฐ๊ฐ ๊ฝํ ์์ผ๋ฉด ๊ทธ ์ ์๊ธฐ๊ธฐ๋ฅผ ์ ๊ฑฐํ๊ณ ์๋ก์ด ์ ์๊ธฐ๊ธฐ๋ฅผ ๊ฝ์ผ๋ฉด ํด๊ฒฐ๋๋ค. ๋ชจ๋ ์ ์๊ธฐ๊ธฐ๊ฐ ๋ค์ ์ฌ์ฉํ ์ ์๊ธฐ๊ธฐ์ธ ๊ฒฝ์ฐ ์ฐ์ ์์๋ฅผ.. ๋๋ณด๊ธฐ ์ด์ 1 2 3 4 5 ยทยทยท 13 ๋ค์