-
[Python] BOJ 11724 : 연결 요소의 개수코딩테스트/백준 2024. 9. 25. 14:35
요구사항
- 시간 제한 3초
- 3 * 10^8 번 의 연산이 가능한 시간
- dfs 인접리스트 시간 복잡도 O(N+M)
- N과 M이 최대 10^5 이내라면 통과
- 메모리 제한 512MB
- 방문 여부를 저장하는 리스트 visited O(N+M)
- 방향 없는 그래프가 주어졌을 때, 연결 요소의 개수를 구해라
설계
- DFS를 구현
- 노드의 개수 만큼 방문하지 않았으면 DFS 를 실행, 카운트 체크
구현
import sys sys.setrecursionlimit(10**7) input = lambda: sys.stdin.readline().rstrip() N, M = map(int, input().split()) graph = [[] for _ in range(N+1)] visited = [False] * (N+1) for i in range(M): u, v = map(int, input().split()) graph[u].append(v) graph[v].append(u) def dfs(v): visited[v] = True for i in graph[v]: if not visited[i]: visited[v] = True dfs(i) count = 0 for i in range(1,N+1): if not visited[i]: dfs(i) count += 1 print(count)
위 소스 코드가 이해가 안된다면, https://www.acmicpc.net/problem/1260 부터 푸셔요
'코딩테스트 > 백준' 카테고리의 다른 글
[Python] BOJ 11725 : 트리의 부모 찾기 (1) 2024.09.25 [Python] BOJ 2606 : 바이러스 (0) 2024.09.25 [Python] BOJ 1780 : 종이의 개수 (0) 2024.09.25 [Python] BOJ 1992 : 쿼드트리 (0) 2024.09.25 [Python] BOJ 2630 : 색종이 만들기 (0) 2024.09.25 - 시간 제한 3초