728x90
๐ฑ ๋ฌธ์
๐ฑ ํด๊ฒฐ๊ณผ์
1. DFS ์ BFS์ ๊ฐ๋ ์ ๊ณต๋ถํ ์ดํ
2. ๊ทธ์ ๋ง๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
๐ฑ DFS (๊น์ด ์ฐ์ ํ์)
์ฌ๊ท๋ฅผ ํ๊ธฐ ๋๋ฌธ์ BFS ๋ณด๋ค ๋๋ฆฐ ๊ฒ์ด ํน์ง
BFS์ ๋ฌ๋ฆฌ ์ด๋ค ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋์ง ์ฌ๋ถ๋ฅผ ๋ฐ๋์ ๊ฒ์ฌ
์๊ฐ ๋ณต์ก๋
LinkedList : O(N + E), N: ์ ์ ์, E: ๊ฐ์ ์
ํ๋ ฌ: O(N^2)
๐ฑ BFS (๋๋น ์ฐ์ ํ์)
์ต๋จ ๊ฒฝ๋ก, ์์์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๊ณ ์ถ์ ๊ฒฝ์ฐ
์ฌ๊ท X, Iteration O
ํ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ FIFO (First Input First Output)
์๊ฐ ๋ณต์ก๋
O(N^2)
๐ฑ DFS & BFS ๋ฌธ์ ์ฐจ์ด์
DFS
๋ชจ๋ ์น๊ตฌ ๊ด๊ณ๋ฅผ ๋ค ์ดํด๋ณด๋ ๊ฒฝ์ฐ
BFS
๊ณ ์ ๋ ๊ฐ๊ณผ ๊ฐ๊น์ด ๊ด๊ณ๋ถํฐ ํ์
728x90
๐ฑ ์ฝ๋
import java.io.*;
import java.util.*;
public class Main {
static int n; // ์ ์
static int m; // ๊ฐ์
static int v; // ํ์์ ์์ํ ์ ์ ์ ๋ฒํธ
static int[][] arrays;
static boolean[] visited;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
while(st.hasMoreTokens()){
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
v = Integer.parseInt(st.nextToken());
}
arrays = new int[n + 1][n + 1];
for (int i = 0; i < m ; i ++){
String line = br.readLine();
st = new StringTokenizer(line);
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
arrays[x][y] = 1;
arrays[y][x] = 1;
}
visited = new boolean[n + 1];
dfs(v);
System.out.println();
visited = new boolean[n + 1];
bfs(v);
}
private static void dfs(int a) {
visited[a] = true;
System.out.print(a + " ");
for (int i = 1; i < n + 1; i++){
if(!visited[i] && arrays[a][i] == 1){
dfs(i);
}
}
}
private static void bfs(int a) {
Deque<Integer> queue = new LinkedList<>();
queue.add(a);
visited[a] = true;
while(!queue.isEmpty()){
int k = queue.remove();
System.out.print(k + " ");
for (int i = 1; i < n + 1; i ++){
if(!visited[i] && arrays[k][i] == 1){
visited[i] = true;
queue.add(i);
}
}
}
}
}
728x90
'PS > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2630 JAVA ์์ข ์ด ๋ง๋ค๊ธฐ (0) | 2024.02.01 |
---|---|
15649 JAVA N๊ณผ M (1) (1) | 2024.02.01 |
6588 Python ๊ณจ๋๋ฐํ์ ์ถ์ธก ๋ชจ๋ ์์ด (0) | 2023.07.31 |
1244 Python ์ค์์น ์ผ๊ณ ๋๊ธฐ (0) | 2023.02.20 |
1002 JAVA ํฐ๋ (0) | 2023.01.01 |