반응형

-풀이

n, m = map(int, input().split())

graph = []
for i in range(n):
  graph.append(list(map(int, input())))

def dfs(x, y):
  if x<= -1 or x >= n  or y <= -1 or y >= m:
    return False
  if graph[x][y] == 0:
    graph[x][y] = 1
    dfs(x-1,y)
    dfs(x,y-1)
    dfs(x+1,y)
    dfs(x,y+1)
    return True
  return False
result = 0
for i in range(n):
  for j in range(m):
    if dfs(i, j) == True:
      result += 1
print(result)

-풀이 설명(느낀점)

유튜브 영상을 보고 풀이를 그대로 작성하며 dfs가 어떻게 문제에서 응용되고 동작하는지 감을 익히고 있다. 전에 프로그래머스 2단계 문제를 풀 때 상하좌우를 탐색하는 문제가 있었는데, 그땐 그게 뭔지 감이 안잡혔는데, 이제는 dfs라는 것을 알게되었다.

 

 

출처 : https://www.youtube.com/watch?v=7C9RgOcvkvo 

 

+ Recent posts