티스토리 뷰
programmers.co.kr/learn/courses/30/lessons/43162
코딩테스트 연습 - 네트워크
네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있��
programmers.co.kr
computers = [[1, 1, 0, 0], [1, 1, 0 0], [0, 0, 1, 1], [0, 0, 1, 1]]
n = 4
인 그래프에서 visited = [0] * 4
배열을 생성한다.
visited[1] = 1
이면 1번 그래프는 이미 방문한 것이다.
0, 1, 2, 3번 그래프를 순회하면서
-> 0번에서 1번 그래프가 연결되어 있다면 -> 이미 연결되어 방문했는지 확인하고 (visited [1] = 0
인지) 확인하고 -> 그 이전까지 확인한 적이 없다면 -> st = []
에 1번을 추가해서 -> 1번 그래프에서 연결된 정점들을 다시 탐색한다.
만약 1번 정점에서 -> 0번이 연결된 것을 확인하더라도 -> visited[0] = 1
이라서 이미 방문했기 때문에 탐색 대상에 추가되지 않는다.
def dfs(computers, visited, start):
st = [start]
while st:
i = st.pop()
if visited[i] == 0:
visited[i] = 1
for j in range(len(computers)):
if computers[i][j] == 1 and visited[j]==0:
st.append(j)
def solution(n, computers):
answer=0
visited = [0] * n
for idx in range(0, n):
if visited[idx] == 0:
dfs(computers, visited, idx)
answer += 1
return answer
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 level 2 - 땅따먹기 (0) | 2020.11.18 |
---|---|
프로그래머스 level 2 - 주식가격 (스택/큐) (0) | 2020.11.18 |
프로그래머스 level 2 - 기능개발 (스택/큐) (0) | 2020.09.14 |
프로그래머스 level 2 - 프린터 (스택/큐) (0) | 2020.09.14 |
프로그래머스 level 3 - 베스트앨범 (해시) (0) | 2020.09.13 |
댓글