-
[DFS/BFS] 네트워크코딩 테스트/프로그래머스 2023. 3. 30. 15:18
문제 설명
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