[백준] 11724 (실버2)

zunzero·2022년 8월 21일
0

알고리즘(파이썬)

목록 보기
26/54

연결되어 있는 덩어리들의 개수를 구하라는 문제이다.
앞서 풀어본 많은 문제들과 너무 유사하니 자세한 설명은 생략하겠다.

# dfs, bfs
# 시간초과 문제가 발생했는데, input() 을 sys.stdin.readline()으로 바꾸어주니 해결되었다.
import sys
sys.setrecursionlimit(100000)


def dfs(graph, v, visited):
    visited[v] = True
    for i in graph[v]:
        if not visited[i]:
            dfs(graph, i, visited)


def main():
    n, m = map(int, sys.stdin.readline().split())

    graph = [[] for _ in range(n + 1)]
    for _ in range(m):
        a, b = map(int, sys.stdin.readline().split())
        graph[a].append(b)
        graph[b].append(a)

    count = 0
    visited = [False] * (n + 1)

    for i in range(1, n + 1):
        if not visited[i]:
            dfs(graph, i, visited)
            count += 1

    print(count)


main()

그래프 탐색 이후, 카운트 값을 1을 증가시키는 방식이다.
dfs에 의한 시간초과 문제나, recursion 문제는 위의 주석 방식으로 해결가능하다.

profile
나만 읽을 수 있는 블로그

0개의 댓글