728x90
반응형
SMALL
백준 저지에서 연결요소의 개수를 파이썬을 통해 풀어 보았다.
https://www.acmicpc.net/problem/11724
11724번: 연결 요소의 개수
첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주
www.acmicpc.net
tomy9729/Algorithm
🐗 내가 직접 작성한 내 코드 🐗. Contribute to tomy9729/Algorithm development by creating an account on GitHub.
github.com
11724번 연결 요소의 개수
문제
방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오.
설명
연결 요소의 개수를 구하라고 나와있는데 즉 그래프의 개수를 구하면 된다. 단 아무런 연결 없이 점 하나만 독립적으로 있더라도 그래프가 될 수 있다.
하나의 그래프를 찾기 위해 DFS를 사용했다. 모든 점에 대해서 반복문을 돌며 각 점에서 DFS를 시도한다. DFS를 통해 방문한 점은 체크해준다. 반복문을 돌며 접근한 점이 이미 방문한 점이라면 그 점은 이미 다른 그래프에 속한다는 의미이다. 한 번의 반복을 완전히 수행하면 하나의 그래프가 있는 것으로 간주한다.
코드
#11724번 연결 요소의 개수
# import sys
# sys.setrecursionlimit(10**6)
# input = sys.stdin.readline
def DFS(graph, now, visited) :
visited[now] = True # 방문
for i in graph[now] :
if visited[i] == False : # 방문하지 않았다면
DFS(graph,i,visited) # 탐색
if __name__ == "__main__":
n, m = map(int,input().split())
visited = [False]*(n+1)
connect = [[] for i in range(n+1)]
for i in range(m) :
point1, point2 = map(int,input().split())
connect[point1].append(point2)
connect[point2].append(point1)
answer = 0
for i in range(1,n+1) :
if visited[i] :
continue
DFS(connect,i,visited)
answer += 1
print(answer)
728x90
반응형
SMALL
'Problem Solving > 백준BOJ' 카테고리의 다른 글
[백준BOJ] 1107번 리모컨.py (0) | 2021.06.30 |
---|---|
[백준BOJ] 11726번 2×n 타일링.py (0) | 2021.06.29 |
[백준BOJ] 1764번 듣보잡.py (0) | 2021.06.28 |
[백준BOJ] 11723번 집합.py (0) | 2021.06.28 |
[백준BOJ] 1620번 나는야 포켓몬 마스터 이다솜.py (0) | 2021.06.27 |