반응형
-풀이
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
'알고리즘' 카테고리의 다른 글
[구현] 백준 23303파이썬 (이 문제는 D2 입니다.) 브론즈2 (0) | 2021.11.06 |
---|---|
[구현] 백준 7568 파이썬 (덩치) 실버5 (0) | 2021.11.06 |
[구현] 백준 10870 파이썬 (피보나치) 브론즈2 (0) | 2021.11.05 |
[구현] 백준 10872파이썬 (팩토리얼) 브론즈3 (0) | 2021.11.05 |
[구현] 백준 2750 파이썬 (수 정렬하기) 브론즈1 (0) | 2021.11.05 |