mongte / practiceAlgorism

traport study
1 stars 0 forks source link

미로 만드는 사람 #5

Open tjcky opened 7 years ago

tjcky commented 7 years ago

최근 미로를 만드는 장인인 마이크는 마당에 거대한 미로를 만들었습니다. 미로에 있는 i 번째 j번째 열을 나무가 있어서 지나갈 수 없는 경우 'X'로, 지나갈 수 없는 경우 '.' 으로 표시했습니다. 마이크는 미로를 잘 빠져나가는 친구 짐에게 미로를 풀 것을 부탁했습니다. 짐은 startRow 행의 startCol 열에서 미로를 시작합니다.

일반적인 미로 탈출 방법과 달리 짐은 미로를 단순하게 걷는 것이 아니라 뛰어넘어 다닙니다. 짐이 이동할 수 있는 형태는 moveRow 와 moveCol 에 기록되어 있습니다. i 번째 요소는 짐이 이동할 수 있는 움직임입니다. 짐은 현재 위치에서 moveRow[i] 행과 moveCol[i] 열 만큼 이동할 수 있습니다. 예를 들어 moveRow = {1, 0, -1} 와 moveCol = {3, -2, 5} 라면 짐은 (1, 3), (0, -2), (-1, 5) 형태로 이동할 수 있습니다. (그러나 짐은 미로 밖으로 나갈 수 없으며 나무로 이동할 수도 없습니다.)

마이크는 짐이 미로에서 나오지 못하게 하고 싶습니다.마이크는 미로의 어떤 '.' 위치에나 출구를 놓을 수 있습니다. 만약 미로에서 나오지 못하게 할 수 없다면 가능한 짐의 이동 거리가 길어지게 하려고 합니다. 짐은 미로에서 항상 최단 경로로 탈출한다고 할 때 짐이 미로에서 벗어날 수 있는 최대 이동 횟수를 리턴하세요. 미로를 빠져나올 수 없는 경우에는 -1을 리턴해주세요.

클래스와 함수 정의

class : MazeMaker function : def longestPath(maze, startRow, startCol, moveRow, moveCol)

예시

(0) maze = { "...", "...", "..." } startRow = 0 startCol = 1 moveRow = {1, 0, -1, 0} moveCol = {0, 1, 0, -1} return = 3

(1) maze = { "...", "...", "..." } startRow = 0 startCol = 1 moveRow = {1, 0, -1, 0, 1, 1, -1, -1} moveCol = {0, 1, 0, -1, 1, -1, 1, -1} return = 2

(2) maze ={ "X.X", "...", "XXX", "X.X" } startRow = 0 startCol = 1 moveRow = {1, 0, -1 ,0} moveCol = {0, 1, 0, -1} return = -1

(3) maze = { ".......", "X.X.X.X..", "....X..", "X....X.", "......."} startRow = 5 startCol = 0 moveRow = {1, 0, -1, 0, -2 , 1} moveCol = {0, -1, 0, 1, 3, 0} return = 7

(4) maze = { "......." } startRow = 0 startCol = 0 moveRow = {1, 0, 1, 0, 1, 0} moveCol = {0, 1, 0, 1, 0, 1} return = 6

(5) maze = { "..X.X.X.X.X.X." } startRow = 0 startCol = 0 moveRow = {2, 0, -2, 0} moveCol = {0, 2, 0, -2} return = -1