Algorithm ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [Algorithm/Java][๋ฐฑ์ค] 2775๋ฒ ๋ถ๋ ํ์ฅ์ด ๋ ํ ์ผ [BOJ] 2775๋ฒ ๋ถ๋ ํ์ฅ์ด ๋ ํ ์ผ https://www.acmicpc.net/problem/2775 ๋ฌธ์ ์ ๊ทผ ๋ฐฑ์ค์์ ์์ ๋ก ์ค ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ํ๋์ฉ ์ฐ๋ค๋ณด๋ฉด ๊ท์น์ด ๋ณด์ด๊ฒ ๋๋ค. 000 -> 0 001 -> 1 002 -> 2 003 -> 3 100 -> 0 101 -> 1 102 -> 3 103 -> 6 200 -> 0 201 -> 1 202 -> 4 203 -> 10 ์ด๋ 103ํธ์๋ 003ํธ์ 102ํธ๋ฅผ ํฉ์น ๊ฐ์ด ์๊ณ , 203ํธ์๋ 103ํธ์ 202ํธ๋ฅผ ํฉ์น ๊ฐ์ด ์๋ค. ์ด๋ฅผ ์ ํ์์ผ๋ก ๋ฐ๊ฟ๋ณด๋ฉด (k0n)ํธ = k-10nํธ + k0n-1ํธ ์ฝ๋๋ก ๋ฐ๊ฟ๋ณด๋ฉด dp[floor][room] = dp[foor-1][n] + dp[floor][n-1]์ด ๋๋ค. ์ด๋ฅผ ์ฝ๋๋ก ๋ฐ๊พธ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. Co.. ๋๋ณด๊ธฐ [Algorithm/Java][๋ฐฑ์ค] 14226๋ฒ ์ด๋ชจํฐ์ฝ [BOJ] 14226๋ฒ ์ด๋ชจํฐ์ฝ https://www.acmicpc.net/problem/14226 ๋ฌธ์ ์ ๊ทผ ํ๋ฉด์ ์๋ ์ด๋ชจํฐ์ฝ์ S๊ฐ ๋ง๋๋ ์ต์ ์๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค. ํ๋ฉด์ ์๋ ์ด๋ชจํฐ์ฝ ๊ฐ์์ ํด๋ฆฝ๋ณด๋์ ์๋ ์ด๋ชจํฐ์ฝ ๊ฐ์ ๊ทธ๋ฆฌ๊ณ ์๊ฐ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์๋ Emoticon ํด๋์ค๋ฅผ ๋ง๋ค๊ณ isVisited ๋ฐฐ์ด์ ํ๋ฉด์ ์๋ ์ด๋ชจํฐ์ฝ ์์ ํด๋ฆฝ๋ณด๋์ ์๋ ์ด๋ชจํฐ์ฝ ์๋ฅผ ๊ณ ๋ คํ ์ ์๋๋ก 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ง๋ค์๋ค. ๊ทธ๋ฆฌ๊ณ BFS๋ฅผ ์ด์ฉํด์ ํ๋ฉด์ ์๋ ์ด๋ชจํฐ์ฝ์ ํด๋ฆฝ๋ณด๋์ ์ ์ฅํ๋ ๊ฒฝ์ฐ, ํ๋ฉด์ ์๋ ์ด๋ชจํฐ์ฝ ํ๊ฐ๋ฅผ ์ ๊ฑฐํ๋ ๊ฒฝ์ฐ, ํด๋ฆฝ๋ณด๋์ ์๋ ์ด๋ชจํฐ์ฝ์ ๋ถ์ฌ๋ฃ๋ ๊ฒฝ์ฐ ์ธ๊ฐ์ง๋ฅผ ๊ณ ๋ คํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์ด์ฐจ์ ๋ฐฐ์ด๋ก ํด๊ฒฐํ ์๊ฐ์ ํ์ง ๋ชปํด์ ํธ๋๋ฐ ๊ฝค๋ ์ค๋๊ฑธ๋ ธ๋ค...๊ทผ๋ฐ .. ๋๋ณด๊ธฐ [Algorithm/Java][๋ฐฑ์ค] 2252๋ฒ ์ค ์ธ์ฐ๊ธฐ [BOJ] 2252๋ฒ ์ค ์ธ์ฐ๊ธฐ https://www.acmicpc.net/problem/2252 ๋ฌธ์ ์ ๊ทผ ์์ ์ ๋ ฌ์ ํตํด์ ์ฝ๊ฒ ํผ ๋ฌธ์ ์ด๋ค. ์์ ์ ๋ ฌ์ด๋ ์ํ์ด ์๋ ๊ทธ๋ํ์์ ์ ์ ๊ฐ์ ์์๋ฅผ ๊ตฌํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ฐ๊ฐ์ ํ์๋ค์ ์ ์ ์ด๋ผ๊ณ ์๊ฐํ๊ณ , ์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๋ ์์๋ค์ ๊ทธ๋ํ๋ค์ ๊ฐ์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ฝ๊ฒ ๋ฌธ์ ๊ฐ ํ๋ฆฐ๋ค. ์์ ์ ๋ ฌ์ด๋ ์ฐ์ ๋ค์ด์ค๋ ๊ฐ์ ์ ๊ฐ์๋ฅผ ์ธ๋ linkCnt์ ๊ฐ์ด 0์ธ ์ ์ ๋ค์ ํ์ ๋ฃ๊ณ , ํ๋์ฉ ํ์์ ๋นผ๋ฉด์ ํด๋น ์ ์ ๊ณผ ์ฐ๊ฒฐ๋ ์ ์ ๋ค์ ๋ํด์ linkCnt๋ฅผ -1 ํด์ฃผ๊ณ ๋ค์ linkCnt์ ๊ฐ์ด 0์ธ ์ ์ ๋ค์ ํ์ ๋ฃ๋ ๋ฐฉ์์ผ๋ก ์งํ๋๋ค. Code import java.util.ArrayList; import java.util.LinkedList; .. ๋๋ณด๊ธฐ [์๊ณ ๋ฆฌ์ฆ] ์ต์ ์คํจ๋ ํธ๋ฆฌ_ Kruskal & Prim ์ต์ ์คํจ๋ ํธ๋ฆฌ (MST, Minimum Spanning Tree) ์คํจ๋ ํธ๋ฆฌ๋, ๊ทธ๋ํ์์ ์ํ ์์ด ๋ชจ๋ ์ ์ ์ ์๋ ๋ถ๋ถ ๊ทธ๋ํ๋ฅผ ์๋ฏธํ๋ค. ์ต์ ์คํจ๋ ํธ๋ฆฌ๋, ์ด๋ฌํ ์คํจ๋ ํธ๋ฆฌ ์ค์์ ๊ฐ์ ์ ๊ฐ์ค์น์ ํฉ์ด ๊ฐ์ฅ ์์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค. ์ด๋ฌํ ์ต์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํฌ๋ฃจ์ค์นผ(Kruskal)๊ณผ ํ๋ฆผ(Prim) ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค. ํฌ๋ฃจ์ค์นผ (Kruskal) ์๊ณ ๋ฆฌ์ฆ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ๊ฐ์ ์ค์์ ๊ฐ์ฅ ๊ฐ์ค์น๊ฐ ์์ ๊ฐ์ ๋ถํฐ ์ฐ๊ฒฐํด ์ฃผ๋ฉด์ ์ต์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ฐ์ ๋ค์ ์ฐ๊ฒฐํ๋ฉด์ ์ํ์ด ๋ฐ์ํ๋ค๋ฉด ํด๋น ๊ฐ์ ์ ๋ฒ๋ฆฌ๊ณ ๋ค์ ๊ฐ์ ์ ์ ํํ๊ฒ ๋๋๋ฐ ์ด ๋, Union-Find ์ฐ์ฐ์ ์ฌ์ฉํ๋ค. ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ ๋ค์ ๊ฐ์ค์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค. .. ๋๋ณด๊ธฐ [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๊ฐ์ ํฌ์ธํฐ๋ฅผ ์กฐ์ํด๊ฐ๋ฉด์ ์ํ๋ ๊ฒ์ ์ป๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ด๋ฌํ ํน์ฑ ๋๋ฌธ์ ํฌ ํฌ์ธํฐ๋ ์ฐ์๋๊ณ ๊ธธ์ด๊ฐ ๊ฐ๋ณ์ ์ธ ๋ถ๋ถ ๋ฐฐ์ด๋ค์ ํ์ฉํ์ฌ ํน์ ์กฐ๊ฑด์ ์ผ์น์ํค๋ ๋ฌธ์ ์ ์ ์ฉ์ํฌ ์ ์๋ค. ํฌ ํฌ์ธํฐ๋ก ํด๊ฒฐํด์ผ.. ๋๋ณด๊ธฐ ์ด์ 1 2 3 4 ยทยทยท 9 ๋ค์