Oh My Algorithm
Algorithm Guidecomplexity: O(4^(N·M))

미로 탈출 (Maze Solver)

격자 미로에서 출발점부터 도착점까지의 경로를 찾는 문제입니다. 한 방향으로 나아가다 벽이나 막다른 길을 만나면 마지막 갈림길로 되돌아가며 다른 방향을 시도하는 백트래킹으로 해결합니다.

01미로 탈출 (Maze Solver)

미로 탈출. 출발 S에서 도착 G까지, 한 방향으로 나아가다 막히면 마지막 갈림길로 되돌아갑니다.

S에서 아래로 한 칸 내려가 (1,0)으로 진입합니다.

계속 아래로 (2,0)까지 내려갑니다.

(2,0)은 오른쪽·아래가 모두 벽이라 막다른 길입니다. 이 가지를 버리고 되돌아갑니다(backtrack).

S로 되돌아와 이번엔 오른쪽 (0,1)로 진행합니다.

(0,2) → (1,2) → (2,2)로 길을 따라 내려갑니다.

(2,3)을 거쳐 (3,3) G에 도착! 막다른 길을 되돌아간 덕분에 경로를 완성했습니다.

S
G
1 / 7

02 쉽게 이해하기

For Everyone
🔑핵심 동작

한 방향으로 갈 수 있는 데까지 가고, 막히면 마지막 갈림길로 돌아와 아직 안 가 본 쪽을 고릅니다.

💡쉽게 말하면

한 방향으로 끝까지 가보고, 막다른 길이면 마지막 갈림길로 돌아와 다른 방향을 시도합니다(DFS 백트래킹).

모든 길을 체계적으로 훑어요.

📍어디에 쓰나
  • 경로 찾기
  • 미로·퍼즐
  • 게임 AI 길찾기

03 파이썬 구현 코드

미로 탈출 (Maze Solver)의 핵심 로직을 담은 표준 구현 예시입니다. 가급적 간결하고 읽기 쉬운 코드로 작성되었습니다.

core_implementation.py
def solve_maze(grid, start, goal):
    rows, cols = len(grid), len(grid[0])
    path = []
    seen = set()

    def backtrack(r, c):
        if not (0 <= r < rows and 0 <= c < cols):
            return False
        if grid[r][c] != 0 or (r, c) in seen:
            return False
        seen.add((r, c)); path.append((r, c))
        if (r, c) == goal:
            return True
        for dr, dc in [(1, 0), (0, 1), (-1, 0), (0, -1)]:
            if backtrack(r + dr, c + dc):
                return True
        path.pop()       # 막다른 길 → 되돌아가기
        return False

    return path if backtrack(*start) else None

04 자주 묻는 질문

FAQ
미로 탈출 (Maze Solver)란 무엇인가요?+

격자 미로에서 출발점부터 도착점까지의 경로를 찾는 문제입니다. 한 방향으로 나아가다 벽이나 막다른 길을 만나면 마지막 갈림길로 되돌아가며 다른 방향을 시도하는 백트래킹으로 해결합니다.

미로 탈출 (Maze Solver)의 시간복잡도는 어떻게 되나요?+

미로 탈출 (Maze Solver)의 시간복잡도는 O(4^(N·M)) 입니다. 시각화의 단계별 진행을 따라가며 왜 이런 복잡도가 나오는지 직접 확인할 수 있습니다.

미로 탈출 (Maze Solver)은(는) 어디에 사용하나요?+

경로 찾기, 미로·퍼즐, 게임 AI 길찾기.

미로 탈출 (Maze Solver)를 쉽게 비유하면?+

한 방향으로 갈 수 있는 데까지 가고, 막히면 마지막 갈림길로 돌아와 아직 안 가 본 쪽을 고릅니다.