DFS와 BFS의 개념은 알지만 직접 짜본적은 없기때문에 타인의 코드를 참고했다.
하지만 문제에 대해서는 어느정도 이해했는지는 중요하기 때문에 어떤 순서로 구현할 지를 먼저 생각해봤다.
1. n개 노드를 DPS로 확인 (들렀던 노드는 기억)
2. 더이상 갈만한 곳이 없는데 노드가 남아있는경우 answer(초기값=1)에 +1을 더함
def solution(n, computers):
answer = 0
visit = [0]*n
i=0
while 0 in visit:
if visit[i]==0:
dfs(computers,visit,i)
answer+=1
return answer
def dfs(computers, visit, start_node):
stack = []
stack.append(start_node)
while stack:
node = stack.pop()
if visit[node]==0:
visit[node]=1
for i in range(len(computers)):
if computers[node][i]==1 and visit[i]==0:
stack.append(i)
#return 0
출처:
https://itholic.github.io/kata-network/
'STUDY > Algorithm' 카테고리의 다른 글
Big O notation 관련 (0) | 2020.12.30 |
---|---|
[프로그래머스] LEVEL3 단어 변환, python3, 깊이/너비 우선 탐색(DFS/BFS) (0) | 2020.01.17 |
[프로그래머스] LEVEL3 자물쇠와 열쇠, python3, 2020 KAKAO BLIND RECRUITMENT (0) | 2020.01.15 |
[프로그래머스] LEVEL3 타일 장식물, python3, 동적계획법(Dynamic Programming) (0) | 2020.01.14 |
[프로그래머스]LEVEL3 2 x n 타일링, python3 (0) | 2020.01.13 |