dukongmon
[그래프] 깊이/너비 우선 탐색(DFS/BFS)문제 1 본문
문제 설명
네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다.
컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오.
제한사항
- 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다.
- 각 컴퓨터는 0부터 n-1인 정수로 표현합니다.
- i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 computers[i][j]를 1로 표현합니다.
- computer[i][i]는 항상 1입니다.

오답노트
def networks (computers, v, visited) :
network = 0
visited[v] = True
print(v, end=' ')
for i in computers[v] :
if computers[v][i] == 1 and not visited[i] :
networks(computers, i, visited)
if False in visited :
network += 1
return network
computer = 3
computers = [[1, 1, 0], [1, 1, 0], [0, 0, 1]]
visited = [False]*computer
network = 0
print("정답 : ",networks(computers,0,visited))
- 전체 노드에 대한 연결요소 확인하는 문제니까 DFS로 접근함
- Line 5에서 computers[v]를 인덱스로 오해함
- network의 개수는 밖에서 세야 함. dfs는 방문 처리 역할만 수
- 결론 : 못품
GPT 추천 답안 : DFS 버전
def solution(n, computers):
answer = 0
visited = [False]*n
def dfs(node) :
visited[node] = True
for i in range(n) :
if computers[node][i] == 1 and not visited[i] :
dfs(i)
for i in range(n) :
if not visited[i] :
dfs(i)
answer += 1
return answer
GPT 추천 답안 : BFS 버전
from collections import deque
def solution(n, computers):
answer = 0
visited = [False]*n
for i in range(n) :
if not visited[i] :
queue = deque([i])
visited[i] = True
while queue :
now = queue.popleft()
for i in range(n) :
if computers[now][i] == 1 and not visited[i] :
visited[i] = True
queue.append(i)
answer += 1
return answer'Python > Coding-test' 카테고리의 다른 글
| [그래프] 깊이/너비 우선 탐색(DFS/BFS)문제 6 (0) | 2026.06.12 |
|---|---|
| [그래프] 깊이/너비 우선 탐색(DFS/BFS)문제 5 (0) | 2026.06.09 |
| [그래프] 깊이/너비 우선 탐색(DFS/BFS)문제 4 (0) | 2026.06.08 |
| [그래프] 깊이/너비 우선 탐색(DFS/BFS)문제 3 (0) | 2026.06.07 |
| [그래프] 깊이/너비 우선 탐색(DFS/BFS)문제 2 (0) | 2026.06.07 |