๐พ Algorithm/- ์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ16 [์๋ฃ ๊ตฌ์กฐ] ์๋ฐ๋ฅผ ์ด์ฉํ ๊ทธ๋ํ์ ๊ตฌํ-์ธ์ ๋ฆฌ์คํธ ๊ตฌํ :: Graph implementation by using adjacency List in java. ์ธ์ ๋ฆฌ์คํธ ์ธ์ ๋ฆฌ์คํธ๋ ๊ทธ๋ํ์ ๊ฐ ์ ์ ์ ์ธ์ ํ ์ ์ ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ํํํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋๋ ์ธ์ ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋๋ฐ, ๊ทธ๋ํ์๋ ์ด๋ฌํ ๊ฐ ์ธ์ ๋ฆฌ์คํธ์ ๋ํ ํค๋ ํฌ์ธํฐ๋ฅผ ๊ฐ๋ ๋ฐฐ์ด๋ก ๊ฐ๋๋ค. ์ด ๋ง์ ์ ์ ์ ๋ฒํธ๋ง ์๊ณ ์์ผ๋ฉด ๊ฐ ์ ์ ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฝ๊ฒ ์ ๊ทผ ๊ฐ๋ฅํ๋ค๋ ์๋ฆฌ์ ๊ฐ๋ค. ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฐ๊ฒฐ๋์ด์๋ ๊ด๊ณ๋ฅผ ๋ฆฌ์คํธ๋ก ํํํ๋ ๊ฒ์ด๋ค. ์ธ์ ๋ฆฌ์คํธ์ ํน์ง n๊ฐ์ ๋ ธ๋๊ฐ ์๋ค๋ฉด n^2๋งํผ์ ๋ฉ๋ชจ๋ฆฌ ์์ด ํ์ํ๋ ์ธ์ ํ๋ ฌ๊ณผ ๋ฌ๋ฆฌ, ์ธ์ ๋ฆฌ์คํธ๋ ํ์ํ ๋งํผ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ก์๋จน๋๋ค. ๋ํ ๋ ธ๋๋ฅผ ํ์ํ๋ ๊ฒ๋ ์์์ ๊ฐ๊น์ด ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง๋ง ์ด๋ค ๋ ธ๋i์ j์ ์ฐ๊ฒฐ ์ํ๋ฅผ ๋ณด๋ ค๋ฉด ๋ชจ๋ ์์๋ฅผ ๋์์ผ ํ๊ธฐ ๋๋ฌธ์ ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ๋จ์ ์ด ์๋ค. ์ธ์ ๋ฆฌ์คํธ์ ๊ตฌํ cl.. 2020. 6. 25. [์๋ฃ ๊ตฌ์กฐ] ์๋ฐ๋ฅผ ์ด์ฉํ ๊ทธ๋ํ์ ๊ตฌํ-์ธ์ ํ๋ ฌ ๊ตฌํ :: Graph implementation by using adjacency matrix in java. ์ธ์ ํ๋ ฌ ์ธ์ ํ๋ ฌ์ G= {V, E} ์ ๊ทธ๋ํ๋ฅผ boolean์ ํ๋ ฌ๋ก ๋ํ๋ธ ๊ฒ์ด๋ค. ํ๋ ฌ์ ์ํ์๋ ๋ ๊ฐ์ง๊ฐ ์๋ค. M[i][j] = 1์ธ ๊ฒฝ์ฐ M[i][j] = 0์ธ ๊ฒฝ์ฐ ํ๋ ฌ์ ์ํ๊ฐ์ด 1์ธ ๊ฒฝ์ฐ๋ ๊ทธ๋ํ๊ฐ ๊ฐ์ ์ ์ํด ์ฐ๊ฒฐ๋์ด ์์ ๋, ์ฆ i, j๊ฐ ๊ทธ๋ํ์ ์กด์ฌํ ๋๋ฅผ ๋ปํ๊ณ ๊ทธ๋ ์ง ์์ ๋๋ 0์ด๋ผ๊ณ ํํํ๋ค. ์ธ์ ํ๋ ฌ์ ํน์ง ์ธ์ ํ๋ ฌ์ ์ด์ฉํ๋๋ฐ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ๋ฐ๋ก ๊ฐ์ ์ ์กด์ฌ ์ ๋ฎค์ด๋ค. ์ ์ u์ ์ ์ v๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ ์ด ์กด์ฌํ๋์ง ํ์ธํ๊ธฐ ์ํด์๋ M[u][v]์ ๊ฐ์ด 1์ธ ๊ฒฝ์ฐ์ 0์ธ ๊ฒฝ์ฐ๋ง ์กฐ์ฌํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(1)์ธ ์์ ์๊ฐ์ด ๋์จ๋ค. ๋ํ ์ธ์ ํ๋ ฌ์ n๊ฐ์ ์ ์ ์ ๊ฐ๋ ๊ทธ๋ํ๋ฅผ ์ธ์ ํ๋ ฌ๋ก ํํํ๊ณ ์ ํ๋ค๋ฉด ๊ฐ์ ์ ์์๋ ๋ฌด๊ดํ๊ฒ ํญ์ n^2.. 2020. 6. 25. [์๋ฃ ๊ตฌ์กฐ] ๊ทธ๋ํ ์๋ฃ๊ตฌ์กฐ :: Graph Data Structure ๊ทธ๋ํ(Graph)๋? ๊ทธ๋ํ๋? ์ฝ๊ฒ ํ ๋ฌธ์ฅ์ผ๋ก ์ค๋ช ํ๋ค๋ฉด, ํ์ค ์ธ๊ณ์ ๊ด๊ณ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ํ๋ผ ์ ์๋ ๊ตฌ์กฐ. ๋ผ๊ณ ํ ์ ์๋ค. ์ฐ๋ฆฌ๋ ์ผ์์์ ๋ค์๊ณผ ๊ฐ์ ๊ณณ์์ ๊ทธ๋ํ๋ฅผ ์ฌ์ฉํ๋ค. ๋ค๋น๊ฒ์ด์ ์ต๋จ ๊ฒฝ๋ก ๋คํธ์ํฌ ํต์ ์น๊ตฌ ๊ด๊ณ ๊ทธ๋ํ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ๋ฅผ ์ฝ๊ฒ ๋ํ๋ผ ์ ์๋ค๋ ์ฅ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ค. ์ด๋ฅผ ์ ๋ฌธ์ ์ธ ์ฉ์ด๋ก ๋ง ํ๋ค๋ฉด ์ ์ ๊ณผ ๊ฐ์ ์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ ์ํ์ ์ผ๋ก๋ G = (V, E)์ ๊ด๊ณ๋ก ๋ํ๋๋ค. ์ฒ์ ๋ณด๋ ์ฌ๋๋ค์ ์ดํด๊ฐ ์ ๊ฐ ์๋ ์๋๋ฐ, ํ ๋ฒ ๋ฐ๋ผ๊ฐ ๋ณด์. ๊ทธ๋ํ์ ์ข ๋ฅ ๊ทธ๋ํ์ ์ข ๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ ์ธ ๊ฐ์ง๋ก ๋๋๋ค. ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ (Undirected Graph) ๋ฌดํญํฅ ๊ทธ๋ํ๋ ๊ฐ์ ์ ๋ฐฉํฅ์ด ํ์๋์ด์์ง ์์ ๊ทธ๋ํ๋ฅผ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ๋ผ๊ณ ํ๋ค. ์ฌ๊ธฐ์ ํ๋.. 2020. 6. 25. [์๋ฃ ๊ตฌ์กฐ] PriorityQueue ์ปฌ๋ ์ ์ ์ด์ฉํ ์๋ฐ ์ฐ์ ์์ ํ :: Java Priority Queue implementing by PriorityQueue Class ์ฐ๋ฆฌ๊ฐ ์ง๋์๊ฐ์ Heap์ ๋ฐฐ์ ๋๋ฐ, ์ฌ์ค Heap์ ์ด Priority Queue, ์ฐ์ ์์ ํ๋ฅผ ์ํด์ ๊ณ ์๋ ์๋ฃ๊ตฌ์กฐ๋ผ๊ณ ํด๋ ๊ณผ์ธ์ด ์๋๋ค. ์ฐ์ ์์ ํ์ ๋ํด์ ์ง๊ธ๋ถํฐ ์์๊ฐ๋ณด์. ์ฐ์ ์์ ํ ์ฐ์ ์์ ํ๋ ๋ง ๊ทธ๋๋ก ์ฐ์ ์์(Priority) ๊ฐ ์กด์ฌํ๋ ํ ์ด๋ค. ์๋ฅผ๋ค์ด ์ฐ๋ฆฌ๊ฐ ํ์๋ค์ด ์์ ๋, ๋์ด ์์ผ๋ก ํ์๋ค์ ์ญ ์ธ์ด๋ค๋ฉด ๋์ด๊ฐ ์ฐ์ ์์๊ฐ ๋์ด ๋์ด๊ฐ ํฌ๊ฑฐ๋ ์์ ์์๋ก ํ์๋ค์ด ์ ๋ ฌ์ด ๋ ๊ฒ์ด๋ค. ์ด ๋ง์ ๋ค์ ํ์ด์ ๋ง ํ๋ค๋ฉด, ๋ค์ด์จ ์์์ ์๊ด ์์ด ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ์ถ๋ ฅ๋๋ค๋ ๋ป์ด๋ค. ์คํ VS ํ VS ์ฐ์ ์์ ํ ์๋ฃ ๊ตฌ์กฐ ์ญ์ ๋์ ์คํ ๊ฐ์ฅ ๋์ค์ ๋ค์ด์จ ๋ฐ์ดํฐ ํ ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ ์ฐ์ ์์ ํ ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ ์ฌ๊ธฐ์ ์ ๊ธฐํ ์ฌ์ค.. 2020. 6. 25. ์ด์ 1 2 3 4 ๋ค์