[프로그래머스 / Python] 네트워크
🧑🏻💻문제링크
문제풀이
대표적인 알고리즘인 BFS
와 DFS
를 활용한 문제이다. 두 개념을 알고 구현만 할 수 있다면 쉽게 풀 수 있지만 아직 BFS
와 DFS
를 확실하게 알기란 쉽지 않다. 조금 더 연습을 해야겠다.
코드
from collections import deque
# 깊이 우선 탐색
def DFS(v, visited, n, computers):
# 방문한 네트워크로 표시
visited[v] = True
for e in range(n):
# e가 해당 네트워크가 아니어야 하고 컴퓨터가 서로 연결되어 있을 때
if e != v and computers[v][e] == 1:
# 다음 네트워크가 방문하지 않았을 때
if not visited[e]:
DFS(v, visited, n, computers)
# 너비 우선 탐색
def BFS(v, visited, n, computers):
# 앞으로 찾을 네트워크
need_visit = deque([v])
while need_visit:
# 해당 노드들을 꺼냄
node = need_visit.popleft()
if not visited[node]:
visited[node] = True
for e in range(n):
if e != node and computers[node][e] == 1:
if not visited[e]:
need_visit.append(e)
def solution(n, computers):
answer = 0
visited = [False] * n
for v in range(n):
if not visited[v]:
#DFS(v, visited, n, computers)
BFS(v, visited, n, computers)
answer += 1
return answer
결과
Author And Source
이 문제에 관하여([프로그래머스 / Python] 네트워크), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@norighthere/프로그래머스-Python-네트워크저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)