ํ ํ์ ๋ ฌ์ ์ดํดํ๊ธฐ ์ ์ ํ์ ๋ํ ์ดํด๊ฐ ํ์ํ๋ค. ํ์ ์ดํดํ๊ธฐ ์ํด์ ๋ค์ ํฌ์คํธ๋ฅผ ํ์ธํด๋ณด์. https://ybdeveloper.tistory.com/132 ํ ์ ๋ ฌ์ด๋? Max Heap, Min Heap์ ๊ตฌ์ฑํด ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ ์ํด์๋ Max Heap, ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ์ํด์๋ Min Heap์ ๊ตฌ์ฑํ๋ฉด ๋๋ค. ์ฆ, ๋ฐ์ดํฐ๋ค์ Max Heap์ด๋ Min Heap ํํ๋ก ์ ์งํ ์ฑ ๋ฃจํธ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์๋ด ์ ๋ ฌ์ ํ๋ ๋ฐฉ์์ด๋ค. ํ ์ ๋ ฌ ๊ตฌํ (๋ด๋ฆผ์ฐจ์) 1. n๊ฐ์ ๋ฐ์ดํฐ์ ๋ํด ๋ฐ๋ณตํ๋ค. O(n) 1-1. ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ฉฐ Max-Heap ํน์ฑ์ ๋ง์กฑํ๋๋ก ์กฐ์ ํ๋ค. O(lgn) 2. Max-Heap์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ์ง ์์ ๋ ๊น์ง ๋ฐ์ดํฐ๋ฅผ ๋ฝ์๋ธ๋ค. O(..
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ด ๋ญ๊น? ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ด๋ ํ๋์ ์ถ๋ฐ์ ์์ ๋๋ฌํ ์ ์๋ ๋ชจ๋ ๋์ฐฉ์ ์ ๋ํ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋์ ์กฐ๊ฑด์ด ์๋๋ฐ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ ๋ค์ ๋น์ฉ์ด ๋ชจ๋ ์์์ฌ์ผ๋ง ์ ์ฉ์ด ๊ฐ๋ฅํ๋ค. ๋ง์ฝ ์์ ๋น์ฉ์ ๊ฐ์ง ๊ฐ์ ์ด ์กด์ฌํ๋ค๋ฉด ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ ์ ์๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๋ฉ์ธ ์์ด๋์ด๋ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ(DP)์ด๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ์กด์ ๊ตฌํด๋์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐฑ์ ํด๋๊ฐ๋ ๋ฉ์ธ ์์ด๋์ด๋ฅผ ๊ฐ์ง๊ณ ์๋ค. (์ต๋จ ๊ฒฝ๋ก๋ ์ต๋จ ๊ฒฝ๋ก๋ค์ ์งํฉ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค) ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋ (์ข ๋ ์์ธํ ์์๋ณผ ๊ฒ) ์๋ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ O(V^2)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ณ ์์์ง..
๊ธฐ์ ์ ๋ ฌ์ด๋? ๋ฎ์ ์๋ฆฌ์๋ถํฐ ๋น๊ตํ์ฌ ์ ๋ ฌํด๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ฉฐ ๋น๊ต ์ฐ์ฐ์ด ๋ถํ์ํ ์ ๋ ฌ์ด๋ค. ์๋ฆฟ์์ ํด๋น๋๋ ๊ฐ์ ๋ฐ๋ผ ๋ฒํท์ ๋ฐ์ดํฐ๋ค์ ์ฝ์ ํ๊ธฐ ๋๋ฌธ์ ๋น๊ต ์ฐ์ฐ์ด ๋ถํ์ํ์ง๋ง ์๋ฆฟ์๋งํผ์ ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ํ์ํ๋ค. (๋ํ ์๋ฆฟ์๋งํผ์ ์ถ๊ฐ์ ์ธ ๋ก์ง๋ ํ์ํ๋ค) ์๋ฆฟ์๊ฐ ๋น์ ์์ ์ผ๋ก ํฐ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ค๋ฉด ์ธ๋ฐ์๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ฅผ ์ฐจ์งํ๊ฒ ๋๋ค. ๊ตฌํ๊ณผ ์๊ฐ ๋ณต์ก๋ ์๋ฐ๋ฅผ ์ด์ฉํ ๊ตฌํ public static void main(String[] args) { RadixSort radixSort = new RadixSort(); for(int i=0; i
์ต๋ ๊ณต์ฝ์ ๊ตฌํ๊ธฐ ์ ํด๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋? ์ต๋ ๊ณต์ฝ์(GCD)๋ฅผ ๊ตฌํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, gcd(a,b)์ (r=a%b๋ผ๊ณ ํ ๋), gcd(b,r)์ ์ต๋ ๊ณต์ฝ์๋ ๊ฐ๋ค. ์ฆ, gcd(a,b) == gcd(b,r)์ด๋ค. ์ด ์ฑ์ง์ ๋ฐ๋ผ gcd(a,b) == gcd(b, a%b) == gcd(a%b, (a%b)%b).... ๋ฐ๋ณตํ์ฌ ๋๋จธ์ง๊ฐ 0์ด ๋์์ ๋ ๋๋์ด์ง๋ ์๊ฐ a์ b์ ์ต๋๊ณต์ฝ์๊ฐ ๋๋ค. ์ ๋ฆฌํ์๋ฉด gcd(a,b) -> cdg(a, a%b) .... -> gcd(x, 0)์ด๋ฉด a์ b์ ์ต๋ ๊ณต์ฝ์๋ x์ด๋ค. ๊ตฌํ private static int gcd(int a, int b) { if(b == 0) return a; return gcd(b, a%b); } ์ต์ ๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ..
LCA(Lowest Common Ancestor) ์๊ณ ๋ฆฌ์ฆ์ด๋? ๋ ๊ฐ์ ๋ ธ๋์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ณตํต๋ ๋ถ๋ชจ๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋งํ๋ค. ์ด๋ป๊ฒ ์ฐพ์ ์ ์์๊น? ์์ ํธ๋ฆฌ์์ 9์ 13์ ๊ณตํต ๋ถ๋ชจ๋ ๋์ ๋ฐ๋ก ์์ ์๋ 2์ด๋ค. ๋ฌผ๋ก 9์ 13๊ณผ ๊ฐ์ด ๊ฐ์ Level์ ์๋ ๋ ธ๋์ธ ๊ฒฝ์ฐ์ ๋ ๋ ธ๋์ Level์ ๋์์ ํ๋์ฉ ์ค์ฌ๊ฐ๋ฉฐ ์ฐพ์ ์ ์๊ฒ ์ง๋ง ๋ง์ฝ ์๋ก ๋ค๋ฅธ Level์ ์๋ ๊ฒฝ์ฐ ๋์์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ค ํ๋ค ๊ณตํต ๋ถ๋ชจ๋ฅผ ์ฐพ์ ์ ์๋ค. ๋ฐ๋ผ์ Level์ด ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ํ๋์ ๋ ธ๋๋ฅผ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋๋ก ํ์ฌ ๊ฐ์ Level๋ก ๋ง์ถฐ์ค์ผ๋ง ํ๋ค. ์ ๋ฆฌํ์๋ฉด, ๋ ๊น์ Level์ ์๋ ๋ ธ๋์ Level์ ์ค์ฌ ์์ Level์ ์๋ ๋ ธ๋์ ๋์ผํ๊ฒ ๋ง์ถฐ์ค์ผ ํ๋ค. Level๊ณผ ๋ถ๋ชจ ๋ ธ๋ ๊ตฌํ๊ธฐ ์ฐ์ ..