CodingTest/Baekjoon
Baekjoon 11724 | 연결요소의 개수 (Python)
tmdrn9
2025. 2. 26. 21:00
📌문제
SILVER2 / 그래프 / 그래프 탐색 / BFS / DFS
https://www.acmicpc.net/problem/11724


📌문제 분석 및 설계
dfs를 몰라서 개념공부할겸 정한 문제이다.
bfs도 적용가능해서 두 버전으로 코드를 돌려봤다.
아래 코드에 있는 DFS와 BFS가 딱 해당 알고리즘의 코드이니, 모르시는 분들은 우선 냅다 외워둬도 괜찮을 것 같다.
중요했던건 sys.setrecursionlimit(10**6) 해당 코드를 안넣으면 백준에서 계속 런타임에러가 났다..
기억하기 ..
📌소스 코드
DFS버전
import sys
from collections import deque
sys.setrecursionlimit(10**6)
input=sys.stdin.readline
N,M=map(int,input().split())
graph=[[] for _ in range(N+1)]
for _ in range(M):
u,v=map(int,input().split())
graph[u].append(v)
graph[v].append(u)
visited=[0]*(N+1)
def dfs(start):
visited[start]=1
for new in graph[start]:
if not visited[new]:
dfs(new)
cnt=0
for i in range(1,N+1):
if not visited[i]:
dfs(i)
cnt+=1
print(cnt)
BFS버전
import sys
from collections import deque
input=sys.stdin.readline
N,M=map(int,input().split())
graph=[[] for _ in range(N+1)]
for _ in range(M):
u,v=map(int,input().split())
graph[u].append(v)
graph[v].append(u)
visited=[0]*(N+1)
def bfs(start):
q=deque([start])
visited[start]=1
while q:
node=q.popleft()
for new in graph[node]:
if not visited[new]:
q.append(new)
visited[new]=1
cnt=0
for i in range(1,N+1):
if not visited[i]:
bfs(i)
cnt+=1
print(cnt)