🧁 visited 배열을 초기화
def initialize_visited():
for i in range(n):
for j in range(m):
visited[i][j] = False
🧁 주어진 위치가 격자를 벗어나는지 여부를 반환
def in_range(x, y):
return 0 <= x and x < n and 0 <= y and y < m
🧁 주어진 위치로 이동할 수 있는지 여부를 확인
def can_go(x, y, k):
if not in_range(x, y):
return False
if visited[x][y] or grid[x][y] <= k:
return False
return True
🧁 dfs
def dfs(x, y, k):
dxs, dys = [0, 1, 0, -1], [1, 0, -1, 0]
for dx, dy in zip(dxs, dys):
new_x, new_y = x + dx, y + dy
if can_go(new_x, new_y, k):
visited[new_x][new_y] = True
dfs(new_x, new_y, k)