*문제 출처는 백준에 있습니다.
문제 제목: 연결 요소의 개수 / 11724번 (실버 2단계)
문제 사이트: https://www.acmicpc.net/problem/11724
문제 설명
나의 풀이
from collections import deque
import sys
def bfs(graph, start):
q = deque([start])
visited[start] = True
power = False
while q:
x = q.popleft()
for next in graph[x]:
if not visited[next]:
power = True
visited[next] = True
q.append(next)
return power
# 전체 입력을 한 번에 읽음
data = sys.stdin.read().split()
# 정점의 개수, 간선의 개수
n = int(data[0])
m = int(data[1])
# 그래프와 방문 배열 초기화
graph = [[] for _ in range(n + 1)] # 1-based index 사용
visited = [False] * (n + 1)
cnt = 0
index = 2 # 입력 데이터에서 간선 시작 위치
# 그래프 연결 정보 입력
for _ in range(m):
u = int(data[index])
v = int(data[index + 1])
graph[u].append(v)
graph[v].append(u)
index += 2
# BFS를 이용해 각 연결 요소 탐색
for i in range(1, n + 1):
if not visited[i]:
bfs(graph, i)
cnt += 1
# 결과 출력
print(cnt)
※ 알아야 할 것
데이터를 입력 받을 때 파이썬은 input()으로 입력 받게되면 시간이 오래 걸린다. 그래서 sys에서 제공하는 입력 방식을 사용해야 시간을 줄일 수 있다.
'코딩테스트(프로그래머스 & 백준) > 백준-Python' 카테고리의 다른 글
백준 / 치즈 / 2636번 / Python (0) | 2024.09.20 |
---|---|
백준 / 내리막 길 / 1520번 / Python (1) | 2024.09.19 |
백준 / N과 M (9) / 15663번 / Python (1) | 2024.09.13 |
백준 / RGB거리 / 1149번 / Python (0) | 2024.09.12 |
백준 / N과 M (5) / 15654번 / Python (0) | 2024.09.11 |