문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

6095 : 미로 DFS — 모든 경로 탐색

•시간제한: 1.000 S •메모리제한: 256 MB •제출: 0 •통과: 0 •만든사람: suakii

6095 : 미로 DFS — 모든 경로 탐색

시간 1.000s · 메모리 256MB · 제출 0 · 정답 0

문제 설명

N×M 크기의 격자 미로 정보가 주어집니다. 시작점 'S'에서 출발하여 끝점 'E'까지 벽 '#'을 피해 도달할 수 있는 모든 경로를 DFS 탐색을 통해 찾아 출력하십시오.

이동 규칙:
1. 한 칸에서 상, 하, 좌, 우 4방향으로 이동할 수 있습니다.
2. 한 경로 내에서 같은 칸을 두 번 이상 방문할 수 없습니다. (Backtracking 필요)
3. 경로 출력 형식은 (r1,c1)->(r2,c2)->... 형태여야 하며, 전체 경로 리스트는 문자열 사전순으로 정렬되어야 합니다.

[제약 조건]
• 격자 크기: $1 \le N, M \le 7$ (정수)
• 격자 구성: 'S'(시작), 'E'(끝), '.'(이동 가능), '#'(벽)
• 경로가 없으면 빈 출력을 합니다.

입력 설명

첫째 줄에 행 크기 N과 열 크기 M (1 ≤ N, M ≤ 7)이 주어집니다.
둘째 줄부터 N개의 줄에 걸쳐 미로의 지도가 주어집니다. ('S'=시작, 'E'=끝, '.'=이동 가능, '#'=벽)

출력 설명

첫째 줄에 가능한 모든 경로의 개수를 출력합니다.
둘째 줄부터 각 경로를 사전순으로 한 줄에 하나씩 출력합니다. (경로가 존재하지 않는 경우 0만 출력합니다.)

입력 예시
COPY
복사되었습니다!

3 3
S..
..#
..E

출력 예시
COPY
복사되었습니다!

4
(0,0)->(0,1)->(1,1)->(1,0)->(2,0)->(2,1)->(2,2)
(0,0)->(0,1)->(1,1)->(2,1)->(2,2)
(0,0)->(1,0)->(1,1)->(2,1)->(2,2)
(0,0)->(1,0)->(2,0)->(2,1)->(2,2)

도움

DFS 호출 시 현재 위치를 방문 처리하고 재귀 탐색을 마친 뒤, 다시 방문 처리를 해제(visited = false)해야 모든 경로를 완전 탐색할 수 있습니다.

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘