[백준]11724 - 연결 요소 개수 with.Python
💡문제 분석 요약
-- 문제 --
입력 : N(정점 개수), M(간선 개수)(1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2), 간선의 양 끝 점 u와 v(1 ≤ u, v ≤ N, u ≠ v)
- 방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성
💡알고리즘 설계
💡코드
💡시간복잡도
O(N)
💡틀린 이유
💡틀린 부분 수정 or 다른 풀이
import sys
input = sys.stdin.readline
N, M = map(int,input().split())
#인접 리스트 -> 인덱스를 그대로 정점의 번호로 사용
graph = list([] for _ in range(N+1))
# 연결 요소 개수
cnt = 0
for _ in range(M):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
#DFS 실시
visited=[False]*(N+1)
def DFS(x):
visited[x]=True
for node in graph[x]:
if not visited[node]:
DFS(node)
cnt=0
for i in range(1, N+1):
if not visited[i]:
DFS(i)
cnt +=1
print(cnt)
💡느낀점 or 기억 할 정보
처음 코테를 접하다보니 접근하는데 어려움을 느낌. -> 문제 많이 접해보기.
개념만 공부하지 말고 기본 구현한 코드 많이 접해보기.
백준 1260번에서 배웠던 방문리스트를 만든 후 dfs함수 시행방법을 꼭 기억하자.
-출처 : https://great-park.tistory.com/21 풀이법 익히는 것을 목표로 하였습니다.