์๋ ํ์ธ์, KB IT's Your Life 7๊ธฐ ๊ธฐ์๋จ์ ๋๋ค!
๋๋์ด ์ฝ๋ฉํ
์คํธ ํน๊ฐ์ด ์์๋์ด์!!
๋๊น์ง ์ฌ๋ฏธ์๊ฒ ์ฝ์ด์ฃผ์ธ์! ๐
๐ ์๋ฃ๊ตฌ์กฐ๊ฐ ๋ญ๋ฐ?
์์ ์์ํ์๋ง์ ์๋ฃ๊ตฌ์กฐ๊ฐ ๋ฌด์์ธ์ง๋ถํฐ ๋ค์ด๊ฐ์ด์.
์๋ฃ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ด์์.
์์ด๋ก Data Structure. ์ด๋ ๊ฒ ๋งํ๋ฉด ๋ญ๊ฐ ๋๋จํด ๋ณด์ด๋๋ฐ ์ฌ์ค ์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ ์ฐ๊ณ ์๋ ๊ฑฐ์์.
์๋ฅผ ๋ค์ด ํ์ ์ด๋ฆ์ ์ ์ฅํ๋ค๊ณ ํด๋ณผ๊ฒ์.
String student1 = "๊น๋ฏผ์";
String student2 = "์ด์์ฐ";
String student3 = "๋ฐ์งํ";
์ด๊ฒ๋ ์๋ฃ๊ตฌ์กฐ์์. ๋ณ์์ ํ๋์ฉ ๋ด์ ๊ฑฐ์ฃ .
๊ทผ๋ฐ ์ด๋ฌ๋ฉด "์ ์ฒด ํ์ ์ด๋ฆ ์ถ๋ ฅํด์ค" ํ ๋ ์ผ์ผ์ด ๋ค ์จ์ผ ๋์์์.
String[] students = {"๊น๋ฏผ์", "์ด์์ฐ", "๋ฐ์งํ"};
for (String s : students) {
System.out.println(s);
}

๋ฐฐ์ด๋ก ๋ฐ๊พธ๋ฉด ๋ฐ๋ณต๋ฌธ ํ๋๋ก ๋๋์.
๋๊ฐ์ ๋ฐ์ดํฐ์ธ๋ฐ ์ด๋ป๊ฒ ์ ์ฅํ๋๋์ ๋ฐ๋ผ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋ฌ๋ผ์ง๋ ๊ฑฐ์์.
์ด๊ฒ ์๋ฃ๊ตฌ์กฐ์ ํต์ฌ์ด์์ด์.
๊ฐ์ฌ๋์ด HashMap ์์๋ ๋ณด์ฌ์ฃผ์ จ๋๋ฐ ์ด๋ฆ์ผ๋ก ๋ฐ๋ก ์ ์๋ฅผ ๊บผ๋ผ ์ ์๋ ๊ฑฐ ๋ณด๊ณ ์ ์ด๋์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ง์ด ์์์ผ ํ๋ ๊ฑฐ๊ตฌ๋์ถ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ = ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
์๋ฃ๊ตฌ์กฐ ๋ค์์ ์๊ณ ๋ฆฌ์ฆ์ด์์.
์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํ๋ฉด ๋ญ๊ฐ ์ํ ๊ณต์ ๊ฐ๊ณ ์ด๋ ค์ ๋ณด์ด๋๋ฐ
๊ฐ์ฌ๋ ์ค๋ช
๋ค์ผ๋๊น ์์ธ๋ก ๋จ์ํ์ด์.
๊ณต 5๊ฐ๋ฅผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ผ๋ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด
๊ฐ์ฅ ์์ ์ซ์๋ฅผ ์ฐพ์์ ๋งจ ์์ ๋๊ณ , ๋จ์ ๊ณต๋ค์์ ๋ ๊ฐ์ฅ ์์ ๊ฑธ ์ฐพ์์ ๋๋
์ด ๊ณผ์ ์์ฒด๊ฐ ์๊ณ ๋ฆฌ์ฆ์ด๋์.
๊ทธ๋์ ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถํ ๋ ์ ๋ต์ด ํ๋ ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ๋ด๋ ค๋์์ผ ํ๋ค๋๋ผ๊ณ ์!
์คํ๋ ค ๋ค์ํ ๋ฐฉ๋ฒ์ ์ด์ด๋๊ณ ๊ทธ์ค์ ํจ์จ์ ์ธ ๊ฑธ ๊ณ ๋ฅด๋ ๊ฒ ์ค์ํ๋ค๋ ๋ง์ด ์ธ์ ๊น์์ด์.
์๊ฐ ๋ณต์ก๋
1์ผ์ฐจ์์ ๊ฐ์ฅ ์ง์คํด์ ๋ค์๋ ํํธ๊ฐ ์๊ฐ ๋ณต์ก๋์์.
์๊ฐ ๋ณต์ก๋๊ฐ ๋ญ๋๋ฉด ๋ด๊ฐ ์ง ์ฝ๋๊ฐ ์คํ๋๋ ๋ฐ ์ผ๋ง๋ ๊ฑธ๋ฆฌ๋๋๋ฅผ ์์นํํ ๊ฑฐ์์.

์ฝ๋๋ฅผ ์คํํ๋ฉด CPU๊ฐ ํ ์ค ํ ์ค ์ฒ๋ฆฌํ์์์.
๋ฐ๋ณต๋ฌธ์ด ์์ผ๋ฉด ๊ทธ ์์ ์ฝ๋๊ฐ ์ฌ๋ฌ ๋ฒ ์คํ๋๋๊น ์๊ฐ์ด ๋์ด๋์.
์
๋ ฅ๊ฐ n์ด ์ปค์ง๋ฉด ์ปค์ง์๋ก ์๊ฐ์ด ์ผ๋ง๋ ๋์ด๋๋๋๋ฅผ ํจ์๋ก ๋ํ๋ธ ๊ฒ ์๊ฐ ๋ณต์ก๋์ธ ๊ฑฐ์์.
๊ทผ๋ฐ ๋งค๋ฒ 5Nยฒ + 3N + 30 ์ด๋ฐ ์์ผ๋ก ์ ํํ๊ฒ ์ฐ๊ธฐ ๊ท์ฐฎ์์์.
๊ทธ๋์ ๊ฐ์ฅ ํฐ ํญ๋ง ๋ฑ ๋ผ์ ๋๋ต์ ์ผ๋ก ํํํ๋ ๊ฒ ๋น
์ค ํ๊ธฐ๋ฒ(Big-O Notation)์ด์์.
- 5Nยฒ + 3N + 30 โ O(Nยฒ)
- 10M + 5 โ O(M)
- ์์๋ง ์์ผ๋ฉด โ O(1)
์ด๋ ๊ฒ ๋๊ฐ ํํํ์! ๊ฐ ํต์ฌ์ด์์ด์.
๊ฐ์ฌ๋์ด ํด์ฆ๋ฅผ 6๊ฐ๋ ๋ด์ จ๋๋ฐ, ์ฒ์์๋ ์ฝ๊ฒ ์์ํ์ด์.
๋ฐฐ์ด์ ํ ๋ฒ ์ํํ๋ ์ฝ๋ โ O(M)
์ด์ค ๋ฐ๋ณต๋ฌธ(for ์์ for) โ O(Nยฒ)
์ด๋ ค์ ๋ ๋ฌธ์ ๋ ์์์ด์
๋ฐ๋ณต๋ฌธ์ด ๋ ๊ฐ ์๋๋ฐ, j์ ์ด๊ธฐํ๊ฐ for๋ฌธ ๋ฐ๊นฅ์ ์๋ ์ฝ๋์๊ฑฐ๋ ์.
๋ค๋ค ๋ฐ๋ณต๋ฌธ ๋ ๊ฐ๋๊น N์ ๊ณฑ์ด์ง!๋ผ ์๊ฐ ํ๋๋ฐ
์ ๋ต์ O(N)์ด์์ด์.
์๋๋ฉด j๊ฐ ๋ฐ๊นฅ์์ ๋ฑ ํ ๋ฒ ์ด๊ธฐํ๋๊ณ ๋๋ฉด, while๋ฌธ์ด ์ ์ฒด์ ์ผ๋ก N๋ฒ๋ง ์คํ๋๊ณ ๋๋๊ฑฐ๋ ์.
์ดํ์ i๊ฐ ์๋ฌด๋ฆฌ ์ฌ๋ผ๊ฐ๋ j๋ ์ด๋ฏธ N์ด ๋ผ๋ฒ๋ ค์ while๋ฌธ ์์ผ๋ก ๋ชป ๋ค์ด๊ฐ์.
์ด ๋ฌธ์ ๋ฅผ ํตํด์ ๊ฐ์ฌ๋์ด ํ๊ณ ์ถ์๋ ๋ง์ ์ด๊ฑฐ์์ด์:
"๋ฐ๋ณต๋ฌธ ๋ช ๊ฐ๋๊น ์๊ฐ ๋ณต์ก๋๊ฐ ์ด๋ป๋ค" ์ด๋ ๊ฒ ๊ธฐ๊ณ์ ์ผ๋ก ์ธ์ฐ๋ฉด ์ ๋ผ์.
์ค์ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง๋ฅผ ์ดํดํด์ผ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ณ์ฐํ ์ ์์ต๋๋ค.
O(N log N)๋ ๋์์ด์
์คํ์๋ j *= 2๋ก ์ฌ๋ผ๊ฐ๋ ๋ฐ๋ณต๋ฌธ์ด ๋์๋๋ฐ, ์ด๊ฒ ๋ฐ๋ก ๋ก๊ทธ์์.
2๋ฅผ ๋ช ๋ฒ ๊ณฑํด์ผ N์ด ๋๋๋ = log N๋ฒ.
N์ด 128์ด๋ฉด 7๋ฒ, 1024๋ฉด 10๋ฒโฆ ์๋ฌด๋ฆฌ N์ด ์ปค์ ธ๋ log N์ ์ฒ์ฒํ ์ฌ๋ผ๊ฐ์.
๋ฐ๊นฅ์ N๋ฒ ๋ฐ๋ณตํ๋ for๋ฌธ์ด ์๊ณ , ์์ log N๋ฒ ๋๋ while๋ฌธ์ด ์์ผ๋ฉด โ O(N log N)
๊ทผ๋ฐ ์ฌ๊ธฐ์๋ j ์ด๊ธฐํ ์์น์ ๋ฐ๋ผ O(N log N)์ด ๋ ์๋ ์๊ณ O(N)์ด ๋ ์๋ ์๋ค๋ ํจ์ ์ด ์์์ด์.
์๊น ๊ทธ ํจํด์ด๋ ๋๊ฐ์ ๊ฑฐ์์. j๊ฐ ๋ฐ๊นฅ์์ ์ด๊ธฐํ๋๋ฉด while๋ฌธ์ด ์ ์ฒด์์ ๋ฑ log N๋ฒ๋ง ๋๊ณ ๋๋๋๊น์.
์๊ฐ ๋ณต์ก๋๋ฅผ ์ค์ ์์ ์ด๋ป๊ฒ ์ธ๊น?
์ฌ๊ธฐ์๋ถํฐ ์ง์ง ๊ฟํ์ด ๋์์ด์.
์ฝ๋ฉํ
์คํธ ๋ฌธ์ ๋ฅผ ๋ณด๋ฉด ์ ์ฝ ์กฐ๊ฑด์ N์ ๋ฒ์๊ฐ ์ ํ ์๊ฑฐ๋ ์.
์๋ฅผ ๋ค์ด "N โค 10โต" ์ด๋ ๊ฒ์.
์ด๋ ๋ด๊ฐ ์๊ฐํ ํ์ด๊ฐ O(Nยฒ)์ด๋ฉด?
โ (10โต)ยฒ = 10ยนโฐ โ 10โธ(์ฝ 1์ด) ๊ธฐ์ค์ ํจ์ฌ ๋๊น โ ์๊ฐ ์ด๊ณผ!
๊ทธ๋์ O(N log N)์ด๋ O(N)์ผ๋ก ํ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํ๋ ๊ฑฐ์์.
๊ฐ์ฌ๋ ๋ง์์ด 10โต๊ฐ ๋ณด์ด๋ฉด ์ถ์ ์๊ฐ ํํธ๋ฅผ ์ฃผ๋ ๊ฑฐ๋ค. N์ ๊ณฑ์ผ๋ก ํ์ง ๋ง๋ผ๋ ๋ป์ด๋์.
์์ ํ์ โ ์ฝ๋ฉํ ์คํธ์ ๊ธฐ๋ณธ ์ค์ ๊ธฐ๋ณธ
์๊ฐ ๋ณต์ก๋ ๋๋๊ณ ๋ฐ๋ก ์์ ํ์(Brute Force) ์ค๋ช ์ด ๋์์ด์.
์์ ํ์์ "๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค ํด๋ณด๋ ๊ฒ"์ด์์.
์ปดํจํฐ์ ๊ฐ์ ์ด ๋ญ์์? ์ฐ๋ฆฌ๋ณด๋ค ์ฒ๋ฆฌ ์๋๊ฐ ๋ช์ฒ๋ง ๋ฐฐ ๋น ๋ฅด๋ค๋ ๊ฑฐ์์์.
๊ทธ๋ฌ๋๊น ๊ทธ๋ฅ ๋ค ์์ผ๋ณด๋ ๊ฑฐ์์.
์๋ฅผ ๋ค์ด ๋ฐฐ์ด์์ ํ๊ฒ๊ฐ 5๋ฅผ ์ฐพ์ผ๋ผ๊ณ ํ๋ฉด,
์์์๋ถํฐ ํ๋์ฉ ๋น๊ตํ๋ฉด ๋์ฃ . ์ด๊ฒ ์์ ํ์์ด์์.

"๋ ์์ ํฉ์ด 14๊ฐ ๋๋ ์ธ๋ฑ์ค ์์ ์ฐพ์๋ผ" ๊ฐ์ ๋ฌธ์ ๋,
์ด์ค ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ชจ๋ ์กฐํฉ์ ๋ค ํด๋ณด๋ฉด ํ๋ ค์. O(Nยฒ)์ด์ง๋ง ํ๋ฆฌ๊ธด ํ๋ฆฌ๋ ๊ฑฐ์ฃ .
๊ฐ์ฌ๋์ด ๊ฐ์กฐํ์ ๊ฑด, ์์ผ๋ก ๋ฐฐ์ธ DFS, BFS, ํด์ํ
์ด๋ธ ๊ฐ์ ๊ฒ๋ค๋ ๊ฒฐ๊ตญ ์์ ํ์์ ์ข ๋ ํจ์จ์ ์ผ๋ก ํ๋ ๋ฐฉ๋ฒ์ด๋ผ๋ ๊ฑฐ์์.
๊ธฐ๋ณธ์ด ์์ ํ์์ด๊ณ , ๊ฑฐ๊ธฐ์ ์๊ฐ ์ด๊ณผ ๋๋ฉด ๋ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ฐพ๋ ํ๋ฆ์ธ ๊ฑฐ์ฃ .
๊ทธ๋ํ, BFS, DFS
2์ผ์ฐจ๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ๊ทธ๋ํ์ ๋ค์ด๊ฐ์ด์.
์ด๋ ๋ถํฐ ๋จธ๋ฆฌ๊ฐ ์ง์ง ๋ฐ๋น ์ก์ต๋๋คโฆ
๊ทธ๋ํ ํํ ๋ฐฉ๋ฒ
๊ทธ๋ํ๋ฅผ ์ฝ๋๋ก ์ด๋ป๊ฒ ํํํ๋๊ฐ ์ฒซ ๋ฒ์งธ ๊ด๋ฌธ์ด์์ด์.
๊ฐ์ ๋ฆฌ์คํธ: ๋ฌธ์ ์์ ๋ณดํต ์ด ํํ๋ก ์ฃผ์ด์ ธ์. [[0,1], [0,2], [3,1]] ์ด๋ฐ ์์ผ๋ก "๋๊ฐ ๋๊ตฌ๋ ์ฐ๊ฒฐ๋๋ค"๋ง ์ญ ๋์ดํ ๊ฑฐ์์.
์ธ์ ๋ฆฌ์คํธ: ์ฐ๋ฆฌ๊ฐ ์ค์ ๋ก ์ฝ๋์์ ์ธ ํํ์์. ๊ฐ ๋ ธ๋๋ณ๋ก "๋๋ ์ฐ๊ฒฐ๋ ๋ ธ๋๊ฐ ๋๊ตฌ๋๊ตฌ๋ค"๋ฅผ ๋ฆฌ์คํธ๋ก ์ ๋ฆฌํ ๊ฑฐ์์.
๋ฌธ์ ์์๋ ๊ฐ์ ๋ฆฌ์คํธ๋ก ์ฃผ์ง๋ง, ์ฐ๋ฆฌ๋ ์ธ์ ๋ฆฌ์คํธ๋ก ๋ณํํด์ ์จ์ผ ํด์.
์ด ๋ณํ ์ฝ๋๊ฐ ๊ฑฐ์ ๋ชจ๋ ๊ทธ๋ํ ๋ฌธ์ ์์ ํ
ํ๋ฆฟ์ฒ๋ผ ์ฐ์ธ๋ค๊ณ ํ์
จ์ด์.
// ๊ฐ์ ๋ฆฌ์คํธ โ ์ธ์ ๋ฆฌ์คํธ ๋ณํ (์๋ฐฉํฅ)
List<List<Integer>> graph = new ArrayList<>();
for (int i = 0; i < n; i++) {
graph.add(new ArrayList<>());
}
for (int[] edge : edges) {
graph.get(edge[0]).add(edge[1]);
graph.get(edge[1]).add(edge[0]); // ์๋ฐฉํฅ์ด๋ฉด ์ด๊ฒ๋ ์ถ๊ฐ
}

์ด๊ฑฐ ๊ฐ์ฌ๋์ด ํ 20~30๋ฒ ๊ตฌํํด๋ด์ ๊ทธ๋ฅ ์ ์ ๋์์ผ ํ๋ค๊ณ ํ์
จ์ด์.
์ง์ง ํ
ํ๋ฆฟ ์์ค์ผ๋ก ์ธ์์ผ ํ๋ ์ฝ๋๋์...
BFS โ ๊ฐ๊น์ด ๋ฐ๋ถํฐ ๋ฐฉ๋ฌธํ๊ธฐ
BFS(Breadth-First Search)๋ ๋๋น ์ฐ์ ํ์์ด์์.
์์ ๋
ธ๋์์ ๊ฐ๊น์ด ๋
ธ๋๋ถํฐ ์ฐจ๋ก๋๋ก ๋ฐฉ๋ฌธํ๋ ๋ฐฉ์์ด์์.
ํต์ฌ ์๋ฃ๊ตฌ์กฐ๋ ํ(Queue)์์. First In, First Out.
๋จผ์ ์์ฝํ ๋
ธ๋๋ฅผ ๋จผ์ ๋ฐฉ๋ฌธํ๋๊น, ์์ฐ์ค๋ฝ๊ฒ ๊ฐ๊น์ด ๋ฐ๋ถํฐ ๋ฐฉ๋ฌธ์ด ๋๋ ๊ฑฐ์์.
๋์ ๊ณผ์ ์ ์ ๋ฆฌํ๋ฉด:
- ์์ ๋ ธ๋๋ฅผ ํ์ ๋ฃ๊ณ ๋ฐฉ๋ฌธ ํ์
- ํ์์ ํ๋ ๊บผ๋ด์ ๋ฐฉ๋ฌธ
- ์ฐ๊ฒฐ๋ ๋ ธ๋ ์ค ๋ฐฉ๋ฌธ ์ ํ ๊ฒ๋ค์ ํ์ ๋ฃ๊ณ ๋ฐฉ๋ฌธ ํ์
- ํ๊ฐ ๋น ๋๊น์ง 2~3 ๋ฐ๋ณต
Queue<Integer> queue = new ArrayDeque<>();
boolean[] visited = new boolean[n];
queue.offer(start);
visited[start] = true;
while (!queue.isEmpty()) {
int current = queue.poll();
for (int next : graph.get(current)) {
if (!visited[next]) {
queue.offer(next);
visited[next] = true;
}
}
}
๊ฐ์ฌ๋์ด ์ด ์ฝ๋๋ฅผ ํ ์ค ํ ์ค ์คํํด์ฃผ์๋ฉด์ "์์ฝํ๊ณ โ ๋ฐฉ๋ฌธํ๊ณ โ ์์ฝํ๊ณ โ ๋ฐฉ๋ฌธํ๊ณ " ์ด ํ๋ฆ์ ๋ฐ๋ณตํด์ ๋ณด์ฌ์ฃผ์
จ๋๋ฐ, ์ด๊ฑฐ ๋ณด๋๊น ์ง์ง ์ดํด๊ฐ ๋์ด์.
BFS์ ๊ฟ๊ธฐ๋ฅ: ์์ ๋
ธ๋์์ ๊ฐ ๋
ธ๋๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ์ ์์ด์!
ํ์ ๋
ธ๋ ๋ฒํธ๋ง ๋ฃ๋ ๊ฒ ์๋๋ผ ๊ฑฐ๋ฆฌ ์ ๋ณด๊น์ง ๊ฐ์ด ๋ฃ์ผ๋ฉด ๋๊ฑฐ๋ ์.
DFS
DFS(Depth-First Search)๋ ๊น์ด ์ฐ์ ํ์์ด์์.
ํ๋์ ๊ฒฝ๋ก๋ฅผ ์ ํํ๋ฉด ๋๊น์ง ํ๊ณ ๋ ํ, ๋งํ๋ฉด ๋๋์์์ ๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ ํ์ํ๋ ๋ฐฉ์์ด์์.
BFS๋ ํ๋ฅผ ์ด๋ค๋ฉด, DFS๋ ์ฌ๊ทํจ์(๋๋ ์คํ)๋ฅผ ์จ์.
์๋๋ฉด ๊น์ด ๋ค์ด๊ฐ๋ค๊ฐ ๋๋์์ฌ ๋, "๋ด๊ฐ ๋ง์ง๋ง์ผ๋ก ์ด๋์ ์๋๋ผ?"๋ฅผ ์์์ผ ํ๊ฑฐ๋ ์.
Last In, First Out โ ์คํ์ ํน์ฑ์ด ๋ฑ ๋ง๋ ๊ฑฐ์์.
์ฌ๊ท๋ก ๊ตฌํํ๋ฉด ์ฝ๋๊ฐ ์ง์ง ์งง์์:
void dfs(int current, List<List<Integer>> graph, boolean[] visited) {
visited[current] = true; // ๋ฐฉ๋ฌธ ๋จผ์ !
for (int next : graph.get(current)) {
if (!visited[next]) {
dfs(next, graph, visited); // ์ฌ๊ท ํธ์ถ
}
}
}
BFS๋ ๋น๊ตํ๋ฉด ๊ตฌ์กฐ ์ฐจ์ด๊ฐ ํ ๋ณด์ด์ฃ ?
BFS๋ "์์ฝ โ ๋ฐฉ๋ฌธ โ ์์ฝ โ ๋ฐฉ๋ฌธ"์ด๊ณ ,
DFS๋ "๋ฐฉ๋ฌธ โ ๋ค์ ๋
ธ๋ DFS ํธ์ถ โ ๋ ๋ฐฉ๋ฌธ โ ๋ ํธ์ถ"์ด์์.
๊ฐ์ฌ๋์ด DFS ๋์ ๊ณผ์ ์ ํ๋ํ๋ ์ถ์ ํด์ฃผ์
จ๋๋ฐ,
์ฌ๊ท ํธ์ถ์ด ์์๋ค๊ฐ ํ๋์ฉ ๋น ์ ธ๋์ค๋ ๊ณผ์ ์ด ์ฒ์์ ์ ์ ์์์ด์.
๊ทผ๋ฐ "dfs(1) ํ๋๋ ์์์ ๋ง ๋ฐฉ๋ฌธํ๊ณ ๋ค ๋๋๊ณ ๋์์๋ค. ์ค์ผ์ด, ๊ทธ๋ผ dfs(3) ํด์ผ์ง" ์ด๋ฐ ์์ผ๋ก ์ดํดํ๋๊น ์ข ๊ฐ์ด ์กํ์ด์.
์ฌ๊ท๊ฐ ์ฒ์์ด์ ๋ถ๋ค์ ์ง๊ธ ๋น์ฅ ์ดํด ์ ๋๋ ๊ฒ ์ ์์ด๋์.ใ
ใ
ใ
์์ง 6์ผ์ด๋ ๋จ์๋๋ฐ ๋ฒ์จ ์ด ์ ๋๋ฉด
๋ค์ ์์
์ด ๊ธฐ๋๋๋ฉด์๋ ์ด์ง ๋ฌด์ญ์ต๋๋ค ๐
๋ค์ ํฌ์คํธ์์ ๋ ๋ง๋์!