๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’พ 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.