간단한 BFS 문제, 거의 처음으로 어떤 참고도 없이 BFS 문제를 완전 자력으로 풀었다. 와!
출처 : programmers.co.kr/learn/courses/30/lessons/43162
알고리즘
하나의 지점에서 시작해서, 닿을 수 있는 모든 네트워크를 큐에 넣는다.
큐에 남는게 없으면 visited가 모두 1이 아닐 때, 최초로 1이 아닌 애를 다시 찾아 탐사를 또 한다.
visited가 모두 1일때 answer가 끝.
(최초 방문 조건을 잊지 말자)
코드
from collections import deque
def bfs(visited, computers):
answer = 1
queue = deque()
queue.append(0)
visited[0] = 1
while 0 in visited:
if len(queue) == 0:
answer += 1
for i in range(len(visited)):
if visited[i] == 0:
queue.append(i)
break
curr = queue.pop()
visited[curr] = 1
for i in range(0, len(visited)):
if computers[curr][i] == 1 and curr != i and visited[i] != 1:
queue.append(i)
return answer
def solution(n, computers):
visited = [0 for _ in range(n)]
answer = bfs(visited, computers)
return answer
'알고리즘 & PS' 카테고리의 다른 글
[Python] 프로그래머스 Lv 3 - 입국심사 (0) | 2021.04.29 |
---|---|
[Python] 프로그래머스 Lv 3 - 단속카메라 (0) | 2021.04.28 |
[Python] 프로그래머스 Lv 4 - 올바른 괄호의 개수 (0) | 2021.04.27 |
[Python] 2018 Kakao Blind Recruitment [3차] n진수 게임 (0) | 2021.04.26 |
[Python] 프로그래머스 Lv 2 - 게임 맵 최단거리 (0) | 2021.04.26 |