코딩테스트/문제

[백준] 11724번 연결 요소의 개수

스키(ski) 2023. 6. 28. 19:16
문제 내용

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

풀이 과정

-유니온 파인드와 그래프탐색(BFS) 이렇게 두가지 방향성을 생각함.

-유니온 파인드 같은 경우는 유니온 과정에서 적절하지 않다고 판단하여 BFS로 진행하기로 했음.

풀이중 문제점

1.deque 사용의 미숙함

 

문제점 해결 과정

1.deque에 대해 학습을 진행한후 풀이 진행.

=> 차후 deque관련 포스트 작성으로 학습 예정

해결 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import sys
from collections import deque
 
sys_input=sys.stdin.readline
n,m=map(int,sys_input().rstrip().split())
arr=[[]*(n+1for _ in range(n+1)]
visited=[False]*(n+1)
 
for _ in range(m): #인접행렬
    a,b=map(int,sys_input().rstrip().split())
    arr[a].append(b)
    arr[b].append(a)
 
ans=0
 
def bfs(x): #BFS
    q=deque()
    q.append(x)
    while len(q)!=0:
        c=q.pop()
        for n in arr[c]:
            if not visited[n]:
                visited[n]=True
                q.append(n)
 
for i in range(1,n+1):
    if not visited[i]:
        ans+=1
        bfs(i)    
 
print(ans)
cs

 

주요 개념 
  • 그래프 탐색: 너비 우선 탐색(Breadth-First Search,BFS)

 

'코딩테스트 > 문제' 카테고리의 다른 글

[백준] 1541번 잃어버린 괄호  (0) 2023.07.03
[백준] 2805번 나무 자르기  (0) 2023.07.03
[백준] 16928번 뱀과 사다리 게임  (0) 2022.09.04
[백준] 9019번 DSLR  (0) 2022.09.03
[백준] 1107번 리모컨  (0) 2022.09.02