문제풀이/프로그래머스
[프로그래머스][Lv3] - 네트워크(Python)
얄루몬
2021. 10. 25. 12:29
<오답>
def solution(n, computers):
def dfs(x,y):
if 0<=x<n and 0<=y<n:
if computers[x][y] == 1:
computers[x][y] = 2
dfs(x,y+1)
dfs(x,y-1)
dfs(x-1,y)
dfs(x+1,y)
return True
return False
result = 0
for i in range(n):
for j in range(n):
if computers[i][j] == 1:
dfs(i,j)
result += 1
return result
<정답>
def dfs(n,computers, start,visited):
visited[start] = True
for i in range(n):
if visited[i] == False and computers[start][i] == 1:
visited = dfs(n,computers,i,visited)
return visited
def solution(n, computers):
visited = [False] * n
cnt = 0
for start in range(n):
if visited[start] == False:
dfs(n,computers,start,visited)
cnt += 1
return cnt
#dfs로 구현했고 깊이 우선탐색이지만 단순히 덩어리를 구하는 문제이기 때문에 연결된 부분을 다 방문처리하고 덩어리 개수만 구해주면 된다.