dfs

Sumin Kim·2022년 10월 3일
1
post-thumbnail

🧁 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):
    # 0: 위쪽, 1: 오른쪽, 2: 아래쪽, 3: 왼쪽
    dxs, dys = [0, 1, 0, -1], [1, 0, -1, 0]
    
    # 네 방향에 각각에 대하여 DFS 탐색을 합니다.
    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)

0개의 댓글