<오답>
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로 구현했고 깊이 우선탐색이지만 단순히 덩어리를 구하는 문제이기 때문에 연결된 부분을 다 방문처리하고 덩어리 개수만 구해주면 된다.
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Lv1] - 키패드 누르기 (Python) (0) | 2021.11.03 |
---|---|
[프로그래머스][Lv3] - 정수 삼각형(Python) (0) | 2021.11.01 |
[프로그래머스][Lv2] - 기능개발(Python) (0) | 2021.10.22 |
[프로그래머스][Lv2] - 짝지어 제거하기(Python) (0) | 2021.10.21 |
[프로그래머스][Lv2] - 구명보트(Python) (0) | 2021.10.20 |