눈송이의 개발생활
[BOJ]11724 - 연결 요소의 개수 (Python) 본문
문제
https://www.acmicpc.net/problem/11724
코드
import sys
input = lambda : sys.stdin.readline().strip()
sys.setrecursionlimit(10000)
def dfs(v):
visited[v] = 1
for i in range(1, N+1):
# 연결되어 있고 visited 아니면 다시 탐색
if s[v][i] == 1 and visited[i] == 0:
dfs(i)
N, M = map(int, input().split())
s = [[0] * (N+1) for i in range(N+1)]
visited = [0 for i in range(N+1)]
count = 0
for i in range(M):
a, b = map(int, input().split())
# a와 b 연결됨
s[a][b] = 1
s[b][a] = 1
for i in range(1, N+1):
if visited[i] == 0:
dfs(i)
# 연결되어 있지 않고 visited 이면 하나의 connected component 생긴 것
count += 1
print(count)
풀이
DFS/BFS를 사용해서 풀면 되는 문제이다
개념을 이해했다고 생각했는데 막상 문제를 풀어보려고 하니 구현이 어려워서 답을 보고 이해하는 방법을 선택했다
- sys.setrecursionlimit(10000) : 파이썬의 최대 재귀 횟수는 1000인데 이를 넘으면 오류가 나기 때문에 새로운 최대 재귀 횟수를 설정
- 입력받은 2개의 node를 연결시키고 연결된 node들 사이를 돌면서 탐색. 더이상 방문할 곳이 없으면 하나의 connected component가 생긴 것
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ]4963 - 섬의 개수 (Python) (0) | 2022.02.11 |
---|---|
[BOJ]1260 - DFS와 BFS (Python) (0) | 2022.02.10 |
[BOJ]11052 - 카드 구매하기 (Python) (0) | 2022.01.18 |
[BOJ]15988 - 1, 2, 3 더하기 3 (Python) (0) | 2022.01.17 |
[BOJ]1406 - 에디터 (Python) (0) | 2022.01.15 |
Comments