Menu
CoddyTech

Rat in a Maze

보통백트래킹python iconjava iconcpp iconc iconjs icon+10

쥐 한 마리가 n × n 크기의 maze에서 왼쪽 위 칸에서 시작합니다. 1은 열린 칸이고 0은 벽이며, 쥐는 오른쪽 아래 칸에 도달해야 합니다. 한 번 움직일 때 열린 칸으로 한 칸 아래(D), 왼쪽(L), 오른쪽(R) 또는 위쪽(U)으로 이동합니다. 경로에서는 같은 칸을 두 번 방문하지 않으며 출구에서 끝납니다.

모든 경로를 이동 방향을 나타내는 문자열로 반환하세요. 문자열은 알파벳순으로 정렬하고, 경로가 없으면 빈 배열을 반환하세요.

함수

findPaths(maze: integer-2d-array) → string-array
mazeinteger-2d-array
열린 칸은 1, 벽은 0으로 표시하는 n × n 격자
반환값string-array
왼쪽 위에서 오른쪽 아래까지의 모든 경로를 이동 방향 문자열로 나타내고, 알파벳순으로

제약 조건

  • 2 ≤ n ≤ 5
  • maze[i][j]는 0 또는 1입니다.
  • 모든 테스트 미로에는 경로가 최대 2,000개 있습니다. 5 × 5 열린 미로에는 경로가 8,512개 있으므로 테스트에 포함되지 않습니다.

예제

입력
maze = [[1, 1, 0, 0], [0, 1, 1, 0], [1, 1, 1, 0], [1, 0, 1, 1]]
출력
["RDDRDR", "RDRDDR"]
설명
처음에는 오른쪽 셀만 열려 있고, 거기서도 아래쪽 셀만 열려 있으므로 두 경로 모두 RD로 시작합니다. 세 번째 이동인 D가 R보다 먼저 오기 때문에 RDDRDR이 먼저 정렬됩니다.
challenge icon

후속 질문

네 가지 이동이 모두 허용될 때, 경로를 하나씩 나열하지 않고 경로의 수를 셀 수 있을까요? 경로의 수가 감당하기 어려워지기 전에 n은 얼마나 커질 수 있을까요?

코드 초기화
def findPaths(maze):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

인자

maze = [[1, 1, 0, 0], [0, 1, 1, 0], [1, 1, 1, 0], [1, 0, 1, 1]]

예상 출력

["RDDRDR", "RDRDDR"]