[백준]11724 - 연결 요소 개수 with.Python

·

1 min read

💡문제 분석 요약

-- 문제 --

입력 : 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 기억 할 정보

  1. 처음 코테를 접하다보니 접근하는데 어려움을 느낌. -> 문제 많이 접해보기.

  2. 개념만 공부하지 말고 기본 구현한 코드 많이 접해보기.

  3. 백준 1260번에서 배웠던 방문리스트를 만든 후 dfs함수 시행방법을 꼭 기억하자.

-출처 : https://great-park.tistory.com/21 풀이법 익히는 것을 목표로 하였습니다.