์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ์ค๋ธ์
- ์ค๋ฅ๊ฒ์ถ
- ๊ฐ๋ฐ์์ทจ์
- tcp ํ๋กํ ์ฝ
- ์ค๋ ๋
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- til
- ํญํด99
- 99ํด๋ฝ
- i-type
- IEEE 802
- tcp ์ธ๊ทธ๋จผํธ
- ๋น์ฃผ๊ธฐ์ ํธ
- ํ ํฐ ๋ฒ์ค
- ์์๋ฒํธ
- reducible
- ํ๋ ์ ๊ตฌ์กฐ
- xv6
- leetcode
- mariadb
- git merge
- ์ฝ๋ฉํ ์คํธ์ค๋น
- ์๋น์ค ํ๋ฆฌ๋ฏธํฐ๋ธ
- ํ๋ก์ด๋์์
- ์ฐ๋ถํฌdb
- well known ํฌํธ
- ๋ฐ์ดํฐ ์ ์ก
- ์ฃผ๊ธฐ์ ํธ
- ์ค๋ฅ์ ์ด
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- Today
- Total
Unfazedโ๏ธ๐ฏ
๊ทธ๋ํ์ ํํ๊ณผ ์ ์ ๋ณธ๋ฌธ
ํธ๋ฆฌ : ์ ํ์ผ๋ก ํํํ๊ธฐ ํ๋ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํํํ๊ธฐ ์ํด ๊ณ ์
๊ทธ๋ํ๋ ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๋ณด๋ค ์ข๋ ์ผ๋ฐ์ ์ด๊ณ ๊ฐ๋ ฅํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
ํ์ค ์ธ๊ณ์ ์ฌ๋ฌผ์ด๋ ์ถ์์ ์ธ ๊ฐ๋ ๊ฐ์ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ํํ
ex) ์ฌ๋ ค ๋์๋ฅผ ์ฐ๊ฒฐํ๋ ๋๋ก๋ง, ์ฌ๋๋ค ๊ฐ์ ์ง์ธ ๊ด๊ณ, ์น์ฌ์ดํธ ๊ฐ์ ๋งํฌ ๊ด๊ณ ๋ฑ์ ์ฐ๊ฒฐ ๊ตฌ์กฐ
ํธ๋ฆฌ์์ ์ฐจ์ด => ํธ๋ฆฌ๋ ๋ถ๋ชจ-์์ ๊ด๊ณ์ ๋ํ ์ ์ฝ์ด ์กด์ฌํ๋ ๊ทธ๋ํ๋ ๋ถ๋ชจ-์์ ๊ด๊ณ์ ๊ฐ์ ์ ์ฝ์ด ์์
๊ทธ๋ํ์ ์ ์
์ด๋ค ์๋ฃ๋ ๊ฐ๋ ์ ํํํ๋ ์ ์ (vertex)๋ค์ ์งํฉ V์ ์ด๋ค์ ์ฐ๊ฒฐํ๋ ๊ฐ์ (edge)๋ค์ ์งํฉ E๋ก ๊ตฌ์ฑ๋ ์๋ฃ ๊ตฌ์กฐ
์ ์ ๊ณผ ๊ฐ์ ์ผ๋ก ์ ์๋๋ฉฐ ์ ์ ์ ์์น, ๊ฐ์ ์ ์์ ๋ฑ์ ๊ทธ๋ํ์ ์ ์์ ํฌํจ๋์ง ์์.
๊ทธ๋ํ์ ์ข ๋ฅ
ํํํ๊ณ ์ ํ๋ ๋์์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ฐ์ง ๋ณํ๋ ํํ๊ฐ ์กด์ฌ
๊ฐ์ ์ด ๊ฐ์ง ์์ฑ์ ๋ฐ๋ฅธ ๋ถ๋ฅ
- ๋ฐฉํฅ ๊ทธ๋ํ(directed graph)
- ๊ฐ ๊ฐ์ ์ ๋ฐฉํฅ ์์ฑ์ ๊ฐ์ง. ์ ์ u์์ v๋ก์ ๊ฐ์ ๊ณผ v์์ u๋ก์ ๊ฐ์ ์ ์๋ก ๋ค๋ฆ
- ์) ์ง์ฌ๋ ๊ด๊ณ, ๋๋ก๋ง์์ ์ผ๋ฐฉ ํตํ ๋ฑ
- ๋ฌดํฅ ๊ทธ๋ํ(undirected grah) : ๋ฐฉํฅ ๊ทธ๋ํ์ ๋ฐ๋๋ก ๊ฐ์ ์ ๋ฐฉํฅ ์์ฑ์ด ์์
- ๊ฐ์ค์น ๊ทธ๋ํ(weighted graph)
- ๊ฐ ๊ฐ์ ์ ๊ฐ์ค์น(weight)๋ผ๋ ์ค์ ์์ฑ์ ๋ถ์ฌ
- ๊ฐ์ค์น ์ ์ฉ ์ : ๋ ๋์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ, ๋ ๋ฌผ๊ฑด ์ฌ์ด์ ๊ตํ ๋น์จ, ๋ ์ฌ๋ ์ฌ์ด์ ํธ๊ฐ๋ ๋ฑ
- ๊ด๋ จ ๋ฌธ์ : ์ต์ ์คํจ๋ ํธ๋ฆฌ, ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์
๊ทธ๋ํ์ ํํ์ ๋ฐ๋ฅธ ๋ถ๋ฅ
- ๋ค์ค ๊ทธ๋ํ(multigraph)
- ๋ ์ ์ ์ฌ์ด์ ๋ ๊ฐ ์ด์์ ๊ฐ์ ์ด ์กด์ฌ ๊ฐ๋ฅ
- ์) ๋๋ก๋ง์ ๊ฒฝ์ฐ ๋ ์ง์ ์ ์๋ 2๊ฐ ์ด์์ ๋๋ก๊ฐ ์์ ์ ์์ผ๋ฏ๋ก ๋ค์ค ๊ทธ๋ํ ์ ์ฉ ๊ฐ๋ฅ
- ๋จ์ ๊ทธ๋ํ(simple graph)
- ๋ ์ ์ ์ฌ์ด์ ์ต๋ ํ ๊ฐ์ ๊ฐ์ ๋ง ์กด์ฌ
๋ฃจํธ ์๋ ํธ๋ฆฌ(unrooted tree) : ๋ถ๋ชจ ์์ ๊ด๊ณ๋ ์์ง๋ง ์ฐ๊ฒฐ ๊ด๊ณ๋ ํธ๋ฆฌ์ ๊ฐ์ ๋ฌดํฅ ๊ทธ๋ํ
์ฌ๊ธฐ์ ๊ฐ์ ๋ค์ ์ฐ๊ฒฐ ๊ด๊ณ๊ฐ ํธ๋ฆฌ์ ๊ฐ๋ค๋ ๋ง์ ๊ฐ์ ์ ํตํด ๋ ์ ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ํ๋๋ฐ์ ์๋ค๋ ์๋ฏธ
- ์ด๋ถ ๊ทธ๋ํ(bipartite graph)
- ์ ์ ๋ค์ ๊ฒน์น์ง ์๋ ๋ ๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋๋ ์ ์๋ก ๋ค๋ฅธ ๊ทธ๋ฃน์ ์ํ ์ ์ ๋ค ๊ฐ์๋ง ๊ฐ์ ์ด ์กด์ฌํ ์ ์๋ ๊ทธ๋ํ
- ex) ๋ฉํ -๋ฉํฐ๋ฅผ ๊ทธ๋ํ๋ก ํํ : ๋ ์ฌ๋์ด ๋ฉํ -๋ฉํฐ๋ก์จ ํจ๊ป ํ๋ ํ๋ฉด ๋ ์ ์ ์ฌ์ด์ ๊ฐ์ ์ด ์๋๋ก ํจ
- ์ด ๊ทธ๋ํ๋ฅผ ๋ฉํ ์ ๋ฉํฐ๋ก ๋๋๋ฉด ๊ฐ์ ์ ํญ์ ๋ ๊ทธ๋ฃน ์ฌ์ด์๋ง ์กด์ฌ
- ์ฌ์ดํด ์๋ ๋ฐฉํฅ ๊ทธ๋ํ(DAG, directed acyclic graph)
- ๋ฐฉํฅ ๊ทธ๋ํ์ ์ผ์ข
- ์ฌ์ดํด์ด ์์ => ํ ์ ์์ ์ถ๋ฐํด ์๊ธฐ ์์ ์ผ๋ก ๋์์ค๋ ๊ฒฝ๋ก(์ฌ์ดํด)๊ฐ ์กด์ฌํ์ง ์์
- ์ฌ๋ฌ ์์ ๋ค ๊ฐ์ ์ํธ ์์กด ๊ด๊ณ ๋ฑ์ ๊ทธ๋ํ๋ก ํํ ์ ์ ์ฉ ๊ฐ๋ฅ
๊ทธ๋ํ์ ๊ฒฝ๋ก
๊ฒฝ๋ก : ๋๊ณผ ๋์ด ์๋ก ์ฐ๊ฒฐ๋ ๊ฐ์ ๋ค์ ์์๋๋ก ๋์ดํ ๊ฒ
๋ฐฉํฅ ๊ทธ๋ํ์ ๊ฒฝ์ฐ ์ ๊ฐ์ ์ ๋์ ์ด ๋ท ๊ฐ์ ์ ์์์ ๊ณผ ๋ง๋์ผ ํจ
๋จ์ ๊ฒฝ๋ก(simple path) : ๊ฒฝ๋ก ์ค ํ ์ ์ ์ ์ต๋ ํ ๋ฒ๋ง ์ง๋๋ ๊ฒฝ๋ก
๊ทธ๋ํ์ ์ฌ์ฉ ์
- ์ฒ ๋๋ง์ ์์ ์ฑ ๋ถ์
์ด๋ค ์ฒ ๋๋ง์์ ํ ์ญ์ด ํ์๋์ด ์ด์ฐจ๊ฐ ์ง๋์ง ๋ชปํ ๊ฒฝ์ฐ ์ฒ ๋๋ง ์ ์ฒด๊ฐ ๋ ๊ฐ ์ด์์ผ๋ก ์ชผ๊ฐ์ง ๊ฐ๋ฅ์ฑ์ด ์๋์ง, ๋ง์ฝ ์๋ค๋ฉด ์ด๋ ์ญ์ด ๊ทธ๋ฐ ์ํ์ฑ์ ๊ฐ๋์ง ๋ถ์
์ ์ : ์ฒ ๋์ ๊ฐ ์ญ
๊ฐ์ : ๋ ์ญ ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํ๋ ์ฒ ๋ก๋ค
๋ฌธ์ ํด๊ฒฐ : ๊ทธ๋ํ + ์ ๋จ์ ์ฐพ๊ธฐ ์๊ณ ๋ฆฌ์ฆ
- ์์ ๋คํธ์ํฌ ๋ถ์
์ฌ๋๋ค ๊ฐ์ ์ง์ธ/์น๋ฐ๋ ๊ด๊ณ ๋ถ์
์ ์ : ์ฌ์ดํธ์ ํ์๋ค
๊ฐ์ : ๋ ํ์์ด ์๋ก ์น๊ตฌ ์ฌ์ด์ธ ๊ฒฝ์ฐ ์ฐ๊ฒฐ
๋ฌธ์ ํด๊ฒฐ : ๊ทธ๋ํ ๋๋น ์ฐ์ ํ์ => ํ ๋ค๋ฆฌ ๊ฑด๋ ์๊ณ ์๋ ์ฌ๋ ์, ๋ช ๋ค๋ฆฌ ๊ฑด๋์ผ ํน์ ์ฌ๋์ ์๊ฒ ๋๋ ์ง ๋ฑ์ ๋ฌธ์ ํด๊ฒฐ
- ์ธํฐ๋ท ์ ์ก ์๋ ๊ณ์ฐ
์๋ง์ ์ปดํจํฐ์ ๋ผ์ฐํฐ๋ค์ด ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐ๋์ด ์๋ ์ธํฐ๋ท
์ ์ : ๋ผ์ฐํฐ์ ์ปดํจํฐ
๊ฐ์ : ๋ ๊ธฐ๊ณ๋ฅผ ์ฐ๊ฒฐํ๋ ์ผ์ด๋ธ
๋ฌธ์ ์ํฉ : ๋ ์ปดํจํฐ ๊ฐ ์ ์ก์ฉ๋ ๊ตฌํ๊ธฐ, ๊ฒฝ๋ก์ ์๊ฐ๋น ์ ์ก ์ฉ๋ = ๊ฒฝ๋ก๊ฐ ์ง๋๋ ์ผ์ด๋ธ ์ค ๊ฐ์ฅ ์์ ์ ์ก ์ฉ๋์ ๊ฐ๋ ์ผ์ด๋ธ์ ์ข์ฐ
๋ฌธ์ ํด๊ฒฐ : ์ต์ ์คํจ๋ ํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ ์์ฉ
- ํ ๋ถ ๊ทธ๋ฆฌ๊ธฐ
์ข ์ด์์ ์ฐํ์ ๋ผ์ง ์๊ณ ์ฃผ์ด์ง ๋ํ์ ๊ทธ๋ฆฌ๋, ๋ชจ๋ ์ ์ ํ ๋ฒ์ฉ๋ง ์ง๋๋๊ฒ ๊ฐ๋ฅํ์ง
์ ์ : ์ ๋ค์ด ๋ง๋๋ ์ ๋ค
๊ฐ์ : ์ ๋ค์ ์ฐ๊ฒฐํ๋ ์ ๋ค
=> ๊ทธ๋ํ์ ๋ชจ๋ ๊ฐ์ ์ ํ ๋ฒ์ฉ๋ง ์ง๋๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ๊ธฐ
๋ฌธ์ ํด๊ฒฐ : ์ค์ผ๋ฌ ๊ฒฝ๋ก(Eulerian path), ๊น์ด ์ฐ์ ํ์ ์์ฉ
- ์ธํ ๊ฑฐ๋
์ธํ ๊ฑฐ๋ ์์ฅ์ ๋ฌ๋ฌ, ์ ๋ก, ์, ํ๋ ๋ฑ์ ํตํ์ ์ด๋ค ๊ฐ์ ๊ตํ ๋น์จ๋ก ๊ตฌ์ฑ๋๋ค.
1๋ฌ๋ฌ๋ฅผ ์ ๋ก๋ก ๋ฐ๊พธ๊ณ , ์ ๋ก๋ฅผ ์์ผ๋ก, ๋ค์ ์ํ๋ฅผ ๋ฌ๋ฌ๋ก ํ์ ํ์์ ๋ 1๋ฌ๋ฌ๋ณด๋ค ๋ง์ ๋์ ๊ฐ์ง๊ฒ ๋๋ ๊ฒ์ ์๋นํธ๋ฌ์ง๋ผํ๋ค.
ํ์จ ๋ชฉ๋ก์ด ์ฃผ์ด์ง ๋ ๋ชฉ๋ก์ ์๋นํธ๋ฌ์ง ์กด์ฌ ์ฌ๋ถ ๊ตฌํ๊ธฐ
์ ์ : ๊ฐ ํตํ
๊ฐ์ : ์๋ก ๊ตํ ๊ฐ๋ฅํ ํตํ๋ค ์ฌ์ด(๋ฐฉํฅ ๊ทธ๋ํ)
u์์ v๋ก ๊ฐ๋ ๊ฐ์ ์ ๊ฐ์ค์น : ๋ ํตํ ๊ฐ์ ๊ตํ ๋น์จ
ex) 1๋ฌ๋ฌ๊ฐ 1000์์ด๋ผ๋ฉด ๋ฌ๋ฌ์์ ์์ผ๋ก ๊ฐ๋ ๊ฐ์ค์น๋ 1000
์๋นํธ๋ฌ์ง๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ : ์ด๋ค ์ฌ์ดํด์ ํฌํจ๋ ๊ฐ์ ์ ๊ฐ์ค์น๋ฅผ ์ ๋ถ ๊ณฑํ์ ๋ 1์ ์ด๊ณผํ๋ ๊ฐ์ด ๋์ด์ผํจ
์๋ณ์ ๋ก๊ทธ๋ฅผ ์์ฐ๊ณ -1์ ๊ณฑํ๋ ์์ ๋ณํ์ ํตํด ๊ฐ์ ๊ฐ์ค์น์ ํฉ์ด ์์์ธ ์ฌ์ดํด์ด ์กด์ฌํ๋ฉด ์๋นํธ๋ฌ์ง๊ฐ ์กด์ฌ ํจ์ ์ ์ ์์
๋ฌธ์ ํด๊ฒฐ : ์ต๋จ ๊ฑฐ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ(๊ฐ์ค์น์ ํฉ์ด ์์์ธ ์ฌ์ดํด ์ฐพ๊ธฐ)
์์์ ๊ทธ๋ํ ๊ตฌ์กฐ๋ค
๊ทธ๋ํ ๊ฐ์ ํํ๋ฅผ ๊ฐ๋ ๊ตฌ์กฐ๊ฐ ์๋๋ผ๋ ๊ทธ๋ํ๋ฅผ ํตํด์ ํํํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ๋ค์ด ์๋ค.
- ํ ์ผ ๋ชฉ๋ก ์ ๋ฆฌ
์ธ์ถ์ ํ๋ ค๋ฉด ์ธ์ถ๋ณต์ ์ ์ด์ผ ํ๊ณ , ์ธ์ถ๋ณต์ ์ ์ผ๋ ค๋ฉด ์ธ์ถ๋ณต์ ๋นจ์์ผ ํ๊ณ , ์ธ์ถ๋ณต์ ๋นจ๋ ค๋ฉด ์ธ์ ๊ฐ ์์ด์ผ ํ๊ณ , ์ธ์ ๋ฅผ ์ฌ๋ ค๋ฉด ์ธ์ถ์ ํด์ผํ๋ ์๋ก ์์กด ๊ด๊ณ์ ์๋ ์ผ๋ค์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ.
ํ ๋ฒ์ ํ๋์ฉ ํด ๋๊ฐ ๋ฐฉ๋ฒ์ด ์๋์ง, ์ด๋ ์์๋๋ก ํ๋ฉด ๋๋์ง๋ฅผ ๊ณ์ฐ => ์์ ์ ๋ ฌ(topological sorting)
๋ฌธ์ ํด๊ฒฐ : ๊น์ด ์ฐ์ ํ์ ์์ฉ
- 15-ํผ์ฆ
4x4 ํฌ๊ธฐ์ ๊ฒ์ํ์ 1๋ถํฐ 15๊น์ง์ ์ซ์๊ฐ ์ ํ ์ด๋ค์ฏ ๊ฐ์ ํ์ผ์ด ๋ผ์์ ธ ์๊ณ , ์ด ํ์ผ๋ค์ ์ต์๋ก ์์ง์ฌ ์๋ ์๋ ์์๋๋ก ์ ๋ ฌ
์ ์ : ๊ฒ์ํ์์ ํ์ฌ ํ์ผ์ ๋ฐฐ์น
๊ฐ์ : ํ ๋ฐฐ์น์์ ํ์ผ์ ํ ๋ฒ ์์ง์ฌ ๋ค๋ฅธ ๋ฐฐ์น๋ฅผ ์ป์ ์ ์์ ๋์ ๋ ์ ์ ์ ์ฐ๊ฒฐ
๊ทธ๋ํ ์์์ ๋ ์ ์ฌ์ด๋ฅผ ์๋ ๊ฐ์ฅ ์งง์ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๊ธฐ
- ๊ฒ์ํ ๋ฎ๊ธฐ
NxN ๊ฒ์ํ์ 1x2 ํฌ๊ธฐ์ ๋ธ๋ก์ผ๋ก ๋ฎ๊ธฐ(๋จ, ๊ฒ์ํ์ ์ผ๋ถ๋ ๋งํ ์์ด ๋ชจ๋ ์นธ์ ๋ธ๋ก์ ๋์ ์ ์๋ ๊ฒ์ ์๋)
์ ์ : ๋งํ์ง ์์ ๊ฐ ์นธ
๊ฐ์ : ์ํ์ข์ฐ๋ก ์ธ์ ํ ์นธ๋ค ์ฌ์ด
๋ฌธ์ ํด๊ฒฐ : ์ด๋ถ ๊ทธ๋ํ => ์ด๋ถ ๋งค์นญ ์๊ณ ๋ฆฌ์ฆ
- ํ์์ค ๋ฐฐ์
N๊ฐ์ ํ์ด ๊ฐ๊ฐ ํ์๋ฅผ ํ๊ณ ์ถ๊ณ , ํ์์ค์ ํ๋ ๋ฟ์ธ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์
๊ฐ ํ์ ํ์์ค ์ฌ์ฉ ํฌ๋ง ์๊ฐ์ 2๊ฐ์ฉ ์ ์ด์ ์ ์ถ
ํ์์ค์ ํ๋ฒ์ ํํ๋ง ์ฌ์ฉ๊ฐ๋ฅ, ํ์๋ ์์๋ถํฐ ๋๊น์ง ์ค๋จ์์ด ์งํ
๋ฌธ์ : ๊ฐ ํ๋ง๋ค ์ ์ถํ 2๊ฐ์ ํฌ๋ง ์๊ฐ ์ค ํ๋์ฉ์ ๋ฐฐ์ ํ์ฌ ๋ชจ๋ ํ์ด ๋ฌธ์ ์์ด ํ์ ์งํ ๊ฐ๋ฅ ์ฌ๋ถ
๋ง์กฑ์ฑ ๋ฌธ์ (satisfiabillity problem) ์ค ๋ชจ๋ ์ฌ๋์ด ๋ ์ ํ์ง ์ค ํ๋๋ฅผ ์ ํํด์ผํ๋ ๋ฌธ์ ๋ก 2-SAT์ด๋ผ ๋ถ๋ฆฌ๋ ๋ฌธ์ ์ ํ
๋ฌธ์ ํด๊ฒฐ : ๊ทธ๋ํ์์ ๊ฐ ๊ฒฐํฉ์ฑ ๋ฌธ์ ๋ก ๋ณํํ์ฌ ํด๊ฒฐ
๊ทธ๋ํ์ ํํ ๋ฐฉ๋ฒ
๊ฐ ์ ์ ์ 0๋ถํฐ ์์ํ๋ ๋ฒํธ๋ฅผ ๋ถํ๊ณ , ๋ฐฐ์ด์ ๊ฐ ์ ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅ
๊ฐ ๊ฐ์ ์ ๋ฐ๋์ชฝ ์ ์ ์ ๋ฒํธ๋ฅผ ์ ์ฅ
๊ฐ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์ (์ธ์ ๋ฆฌ์คํธ, ์ธ์ ํ๋ ฌ)
์ธ์ ๋ฆฌ์คํธ(adjacency list) ํํ
๊ฐ ์ ์ ๋ง๋ค ํด๋น ์ ์ ์์ ๋๊ฐ๋ ๊ฐ์ ์ ๋ชฉ๋ก์ ์ ์ฅํด์ ๊ทธ๋ํ๋ก ํํ
๋ฐ๋ผ์ ๊ฐ ์ ์ ๋ง๋ค ํ๋์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๊ฐ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ
ArrayList<ArrayList<Integer>> adjacent;
adjacent.get(i)๋ ์ ์ i ์ ๊ฐ์ ์ ํตํด ์ฐ๊ฒฐ๋ ์ ์ ๋ค์ ๋ฒํธ๋ฅผ ์ ์ฅํ ArrayList<Integer>๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ.
๋ง์ฝ ๊ฐ์ค์น ๊ทธ๋ํ ๋ฑ ๊ฐ์ ์ด ์ถ๊ฐ์ ์์ฑ์ ๊ฐ๋ ๊ทธ๋ํ๋ฅผ ํํํด์ผ ํ๋ค๋ฉด?
๊ฐ์ค์น๊ฐ ์๋ ๊ทธ๋ํ๋ฅผ ํํํ๊ธฐ ์ํด์๋ ๋จ์ํ ArrayList<Integer>๋ก๋ ์ถฉ๋ถํ์ง ์๋ค. ๊ฐ ๊ฐ์ ์ด ๊ฐ์ค์น์ ๊ฐ์ ์ถ๊ฐ์ ์ธ ์์ฑ์ ํฌํจํด์ผ ํ๋ฏ๋ก, ์ธ์ ๋ฆฌ์คํธ์ ๊ฐ ์์๋ฅผ ArrayList<Edge> ํํ๋ก ์ ์ํ ์ ์๋ค. ์ฌ๊ธฐ์ Edge ํด๋์ค๋ ์ฐ๊ฒฐ๋ ๋ ธ๋์ ๊ฐ์ค์น ์ ๋ณด๋ฅผ ๋ด๊ฒ ๋๋ค.
class Edge {
int destination; // ์ฐ๊ฒฐ๋ ๋
ธ๋
int weight; // ๊ฐ์ ๊ฐ์ค์น
public Edge(int destination, int weight) {
this.destination = destination;
this.weight = weight;
}
}
์ธ์ ๋ฆฌ์คํธ ๊ทธ๋ํ ํํ ๋ฐฉ์์ ๋จ์ : ๋ ์ ์ ์ด ์ฃผ์ด์ง ๋ ์ด ์ ์ ์ด ์ฐ๊ฒฐ๋์ด ์๋์ง ์๊ธฐ ์ํด์๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ผ์ผํ ์ํํด์ผํจ.
=> ์ด๋ฌํ ๋ถ๋ถ์์ ๋ ์ข์ ์ฑ๋ฅ์ ๊ฐ์ง ๊ทธ๋ํ ํํ ๋ฐฉ์์ด ์ธ์ ํ๋ ฌ ํํ ๋ฐฉ์์
์ธ์ ํ๋ ฌ(adjacency matrix) ํํ
V x V ํฌ๊ธฐ์ ํ๋ ฌ, ์ฆ 2์ฐจ์ ๋ฐฐ์ด์ ์ด์ฉํด ๊ทธ๋ํ์ ๊ฐ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
๊ฐ์ฅ ๊ฐ๋จํ ํํ์ ์ธ์ ํ๋ ฌ ํํ์ ๋จ์ํ 2์ฐจ์ ๋ฐฐ์ด boolean ๊ฐ ๋ฐฐ์ด์ด๋ค.
boolean[][] adjacent = new boolean[n][n];
์ด๋ adjacent[i][j]๋ ์ ์ i์์ ์ ์ j๋ก ๊ฐ๋ ๊ฐ์ ์ด ์๋์ง ๋ํ๋ด๋ boolean ๊ฐ ๋ณ์๋ค. ๊ฐ์ค์น ๊ทธ๋ํ๋ฅผ ์ธ์ ํ๋ ฌ๋ก ํํํ ๋๋, ๊ฐ ๊ฐ์ ์ ์ ๋ณด๋ฅผ boolean ๋์ int๋ double ๊ฐ์ ์ฌ์ฉํ์ฌ ์ ์ฅํ๋ค. ๊ฐ์ ์ด ์๋ ๊ฒฝ์ฐ์๋ -1 ํน์ Integer.MAX_VALUE ๊ฐ์ ๊ฐ์ผ๋ก ํ๊ธฐํ์ฌ ๊ตฌ๋ณํ๋ค.
์ธ์ ํ๋ ฌ ํํ๊ณผ ์ธ์ ๋ฆฌ์คํธ ํํ์ ๋น๊ต
์ ๋๊ฐ์ง ๋ฐฉ์์ ์์ ํ ์ ๋ฐ๋์ ํน์ฑ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์, ๋จ์ ๊ณผ ์ฅ์ ์ด ์๋ก ์ ๋ฐ๋์ด๋ค. ๊ตฌํํ๋ ค๋ ์๊ณ ๋ฆฌ์ฆ์ ์ข ๋ฅ๋ ๊ทธ๋ํ์ ์ข ๋ฅ์ ๋ฐ๋ผ ์ ์ ํ ํํ ๋ฐฉ์์ ์ ํํด ์ฌ์ฉํด์ผ ํ๋ค.
์ธ์ ํ๋ ฌ ํํ (๊ฐ์ ์กด์ฌ ํ์ธ ์๊ฐ O(1), ๊ณต๊ฐ ๋ณต์ก๋ ๋น๊ต์ ๋์)
- ์ฅ์
- ์ ์ ์ ๋ฒํธ u, v ๊ฐ ์ฃผ์ด์ก์ ๋ ๋ ์ ์ ์ ์๋ ๊ฐ์ ์ด ์๋์ง๋ฅผ ํ ๋ฒ์ ๋ฐฐ์ด ์ ๊ทผ๋ง์ผ๋ก ํ์ธ
- ๋จ์
- V x V ํฌ๊ธฐ์ 2์ฐจ์ ๋ฐฐ์ด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์ค์ ๊ฐ์ ์ ๊ฐ์์ ๊ด๊ณ์์ด ํญ์ O(V^2) ํฌ๊ธฐ์ ๊ณต๊ฐ์ ์ฌ์ฉ
- ๊ฐ์ ์ ๊ฐ์๊ฐ V^2์ ๊ทผ์ ํ๋ค๋ฉด ๋ ํํ ๋ฐฉ์์ ๋น์ทํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ฐ์ ์ ์๊ฐ ์ ์ ๊ฒฝ์ฐ ๊ณต๊ฐ์ ๋ญ๋น๊ฐ ๋น๊ต์ ์ฌํจ
์ธ์ ๋ฆฌ์คํธ ํํ (๊ฐ์ ์กด์ฌ ์ ๋ฌด ํ์ธ ๋น๊ต์ ๋๋ฆผ, ๊ณต๊ฐ ๋ณต์ก๋ ๊ฐ์ ์ด ์ ์ ๊ฒฝ์ฐ ์ ๋ฆฌ)
- ์ฅ์
- V ๊ฐ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ค์ ๊ฐ์ ์๋งํผ์ ์์๊ฐ ๋ค์ด ์์ผ๋ฏ๋ก, ์ ์ฒด O(V + E)์ ๊ณต๊ฐ๋ง์ ์ฌ์ฉ
- ๋จ์
- ๊ฐ์ (u, v)๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๊ธฐ ์ํด์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฒ์๋ถํฐ ์ฝ์ด๊ฐ๋ฉด์ ๊ฐ ์์ ์ผ์ผ์ด ํ์ธ
ํฌ์ ๊ทธ๋ํ(sparse graph)์ ๊ฒฝ์ฐ ์ธ์ ๋ฆฌ์คํธ, ๋ฐ์ง ๊ทธ๋ํ(dense graph)์ ๋ํด์๋ ์ธ์ ํ๋ ฌ ํํ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌ
์ฐธ๊ณ ์๋ฃ :
ํ๋ก๊ทธ๋๋ฐ ๋ํ์์ ๋ฐฐ์ฐ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํด๊ฒฐ ์ ๋ต - ๊ตฌ์ข ๋ง ์ ์
'๋ฌธ์ ํด๊ฒฐ (PS) > ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] removeAll, retainAll ๋ด๋ถ ๋์ ๋ถ์, batchRemove (0) | 2025.03.03 |
---|---|
[Java] Collection์ add ๋ฉ์๋์ boolean ํ์ ๋ฐํ๊ณผ ์์ธ ์ฒ๋ฆฌ (0) | 2025.02.25 |