입력 조건
출력 조건
입력 예시
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ출력 예시
4 5ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ3
00110
00011
11111
00000
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
# N,M을 공백을 기준으로 구분하여 입력 받기
n, m = map(int,input().split())
# 2차원 리스트의 맵 정보 입력 받기
graph = []
# [[0, 0, 1, 1, 0], [0, 0, 0, 1, 1], [1, 1, 1, 1, 1], [0, 0, 0, 0, 0]]
for i in range(n):
graph.append(list(map(int,input())))
# 모든 노드(위치)에 대하여 음료수 채우기
result = 0
for i in range(n):
for j in range(m):
# 현재 위치에서 DFS수행
if dfs(i,j) == True:
result += 1
print(result)
출처
이것이 취업을 위한 코딩테스트다 with 파이썬 (https://youtu.be/PqzyFDUnbrY)
https://covenant.tistory.com/132