18강 / 20강

졸업 작품 — 미로를 탈출하는 프로그램

지금까지 배운 것을 전부 한자리에

졸업 작품 — 미로를 탈출하는 프로그램
미로 하나에 격자 · 큐 · 스택 · 집합 · 딕셔너리가 전부 들어갑니다.

드디어 종합입니다. 미로에서 출구까지 가장 짧은 길을 찾는 프로그램을 만듭니다. 이 하나의 문제에 지금까지 배운 자료구조가 거의 다 들어갑니다.

쓰이는 것어디에배운 곳
2차원 리스트미로 지도 그 자체2강
튜플좌표 (행, 열) — 딕셔너리 열쇠로 써야 하니까4강
집합이미 가 본 칸 표시4강
딕셔너리각 칸의 직전 칸 기록 → 경로 복원5강
큐 (deque)BFS — 다음에 갈 칸들의 대기열7강
스택DFS 비교용, 경로 되짚기6강
그래프 탐색알고리즘 본체15강

🎮 미로를 직접 그리고 풀어 보세요

칸을 클릭해 벽을 세우고, 출발·도착을 옮긴 뒤 BFS와 DFS를 각각 눌러 보세요. 방문한 칸 수와 찾은 경로의 길이가 어떻게 다른지가 핵심입니다.

미로 탈출 — 벽을 세우고 BFS·DFS로 길을 찾습니다
불러오는 중…

① 미로를 자료로 표현하기

격자는 리스트 안의 리스트입니다. 0은 길, 1은 벽. 좌표는 (행, 열) 튜플로 다룹니다 — 집합과 딕셔너리에 넣어야 하니까요.

미로를 그려 봅니다. 0을 1로 바꿔 벽을 세워 보세요.
Python 브라우저에서 실행

② BFS로 최단 경로 찾기

15강에서 배운 그대로입니다. 큐에서 꺼내고, 상하좌우 이웃을 담고, 본 곳은 표시하고. 여기에 부모 딕셔너리를 하나 더해서, 도착한 뒤 거꾸로 되짚어 경로를 복원합니다.

BFS 본체. 큐 · 집합 · 딕셔너리가 한자리에 모입니다.
Python 브라우저에서 실행
🟩 찾은 경로, 🟨 살펴봤지만 안 쓴 칸. 둘을 비교해 보세요.
Python 브라우저에서 실행

③ 더 해 볼 것

  • 대각선 이동을 허용해 보세요 — 이웃들의 방향 목록에 4개를 더하면 됩니다.
  • 칸마다 이동 비용이 다르다면? (모래는 3초, 길은 1초) 큐 대신 힙(12강)을 쓰면 다익스트라 알고리즘이 됩니다.
  • 미로를 자동 생성해 보세요 — DFS로 벽을 뚫으며 다니면 미로가 만들어집니다.
미로 생성기. 6강의 스택이 여기서도 주인공입니다.
Python 브라우저에서 실행
🤔 확인 문제
미로에서 좌표를 튜플 (행, 열) 로 다루는 이유는?
🤔 확인 문제
BFS로 도착점에 닿은 뒤 경로를 알아내는 방법은?
🤔 확인 문제
같은 미로를 BFS와 DFS로 각각 풀었을 때 확실히 말할 수 있는 것은?