티스토리 뷰
728x90
https://programmers.co.kr/learn/courses/30/lessons/43162
- 해설 : 컴퓨터의 개수 n과 컴퓨터 사이의 연결관계인 computers배열이 주어질 때, 컴퓨터들 사이에 몇 개에 독립적인 그래프가 있는지 찾는 문제이다.
- 풀이 :
BFS 또는 DFS로 구현할 수 있는 문제이다. 그래프의 탐색을 구현할 수 있는지 묻는 문제인데 나는 BFS로 풀었다. 우선, 노드 사이의 연결관계인 computers 배열에서 탐색하지 않은 노드 1개를 꺼내서 bfs로 인접한 노드들을 모두 탐색하고 c 배열을 통해 탐색 완료 확인을 해주었다. 그리고 answer을 1증가시켜 주었고 모든 노드가 탐색완료 상태가 될 때 까지 실행하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from collections import deque def solution(n, computers): answer = 0 c = [0 for _ in range(n)] for i in range(n): if c[i] == 0: queue = deque() queue.append(i) c[i] = 1 while queue: x = queue.popleft() for j in range(n): if c[j] == 0: if computers[x][j] == 1 and i != j: queue.append(j) c[j]=1 answer += 1 return answer | cs |
320x100
'Algorithm > DFS & BFS' 카테고리의 다른 글
(Python) - 프로그래머스 : 전력망을 둘로 나누기 (0) | 2022.01.21 |
---|---|
(Python) - 프로그래머스 : 게임 맵 최단거리 (0) | 2022.01.20 |
(Python) - 프로그래머스(2021 카카오 채용연계형 인턴십) : 거리두기 확인하기 (0) | 2022.01.19 |
(Python) - 프로그래머스 : 가장 먼 노드 (0) | 2022.01.18 |
(Python) - 프로그래머스 : 타겟 넘버 (0) | 2022.01.18 |
댓글
© 2022 WonSeok, All rights reserved