반응형
https://www.acmicpc.net/problem/11724
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N, M, answer = 0;
static boolean[] visited;
static boolean[][] graph;
public static void dfs(int idx) {
visited[idx] = true;
for (int i = 1; i <= N; i++) {
if (graph[idx][i] && !visited[i]) {
dfs(i);
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
graph = new boolean[N + 1][N + 1];
visited = new boolean[N + 1];
for (int i = 1; i <= M; i++) {
st = new StringTokenizer(br.readLine());
int u = Integer.parseInt(st.nextToken());
int v = Integer.parseInt(st.nextToken());
graph[u][v] = true;
graph[v][u] = true;
}
for (int j = 1; j <= N; j++) {
if(!visited[j]) {
dfs(j);
answer++;
}
}
System.out.print(answer);
}
}
핵심
1. DFS를 언제 수행할지
2. graph, 재귀
반응형
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[알고리즘 - Comparator] 오름차순 내림차순 (0) | 2024.08.12 |
---|---|
[알고리즘 - 정렬] Java 삽입, 선택, 버블 정렬 (0) | 2024.08.12 |
[알고리즘 - 백준] 1260번 DFS와 BFS (0) | 2024.08.09 |
[LeetCode] - 49.Group Anagrams (0) | 2024.03.02 |
[ArrayList를 Array로 형 변환] - 코딩테스트 출력값이 안 맞을 때 (0) | 2024.02.03 |