문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/43162
문제 풀이
- 연결된 노드들을 확인한 후 0번 노드부터 BFS 방식으로 탐색하면서 한번에 연결지을 수 있는 것들 모두 연결
- 0번 노드로부터의 탐색이 끝나면 1,2,3,4,5,...n-1번 노드 순서대로 탐색하는데 이미 탐색했던 거라면 continue
- 탐색하지 않았더라면 새로운 네트워크의 발견이므로 answer+1
소스 코드
from collections import deque
def solution(n, computers):
answer = 0
visited = [False]*n
gr = [[] for i in range(n)]
for i in range(n):
for j in range(i+1,n):
if computers[i][j]==1:
gr[i].append(j)
gr[j].append(i)
for i in range(n): #순서대로 탐색
if visited[i]==True:
continue
answer+=1
visited[i]=True
q = deque()
q.append(i)
while(q): #BFS
cur = q.popleft()
for next in gr[cur]:
if visited[next]==True:
continue
visited[next]=True
q.append(next)
return answer
if __name__=='__main__':
n = int(input().rstrip())
com = []
while(True):
op = list(map(int,input().rsplit()))
if not op:
break
com.append(op)
print(solution(n,com))
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[동적 계획법] 등굣길 (0) | 2023.03.31 |
---|---|
[DFS/BFS] 단어 변환 (0) | 2023.03.30 |
[연습 문제] 최고의 집합 (0) | 2023.03.29 |
[힙] 이중 우선순위 큐 (0) | 2023.03.29 |
[동적 계획법] 정수 삼각형 (0) | 2023.03.29 |