# 음료수 얼려 먹기
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+1,y) # 오른쪽도 방문
dfs(x,y+1) # 위쪽도 방문
dfs(x,y-1) # 아래쪽도 방문
return True
n,m = map(int, input().split())
graph = []
for i in range(n):
graph.append(list(map(int,input())))
result = 0
for i in range(n):
for j in range(m):
if dfs(i,j) == True:
result += 1
print(result)
<문제> 미로 탈출
# 미로 탈출
from collections import deque
n,m = map(int,input().split())
graph = []
for i in range(n):
graph.append(list,map(int,input()))
dx = [-1,1,0,0]
dy = [0,0,-1,1]
def bfs(x,y):
queue = deque()
queue.append((x,y))
while queue:
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx >= n or ny >= m or nx< 0 or ny < 0:
continue
if graph[nx][ny] == 0 :
continue
if graph[nx][ny] == 1:
graph[nx][ny] = graph[x][y] + 1
queue.append((nx,ny))
return graph[n-1][m-1]
print(bfs(0,0))
Uploaded by Notion2Tistory v1.1.0