1. 출구에서 거꾸로 생각하기
먼저 출구 바로 위 칸과 그 세로줄을 살펴보세요. 마지막 이동은 대개 출구 방향으로 내려가는 움직임입니다. 그렇다면 마지막 직전에 ‘나’가 어디에 있어야 하는지, 그 위치에 멈추려면 어느 승객이 받쳐 줘야 하는지를 거꾸로 계산할 수 있습니다.
2. 각 방향의 멈춤점을 표시하기
‘나’의 현재 행과 열을 따라가며 상하좌우에 처음 만나는 승객을 확인하세요. 그 승객 바로 앞이 현재 도달 가능한 칸입니다. 아무도 없는 방향은 이동 가능한 길이 아니라 충돌 위험이 있는 방향입니다.
한 번 움직인 뒤에도 같은 검사를 반복하세요. 승객 하나를 내보내면 멈춤점이 사라지므로 이전에 안전했던 방향이 위험해질 수 있습니다.
3. 길을 막는 승객과 발판 승객을 구분하기
출구 열을 차지해 통과를 막는 승객은 제거 후보입니다. 반대로 ‘나’를 출구 열에 정확히 세워 주거나 다음 방향 전환을 가능하게 하는 승객은 잠시 남겨 두어야 합니다. 화살표가 열려 있다고 바로 내보내지 말고, 그 승객이 사라진 뒤 ‘나’가 어디에서 멈출지 먼저 상상하세요.
4. 되돌아올 길을 남기기
한쪽 가장자리로 이동하기 전에는 반대 방향으로 다시 움직일 멈춤점이 있는지 확인하세요. 지금 한 번은 안전해도 다음 수에서 선택지가 없어질 수 있습니다. 특히 후반 단계에서는 움직임 하나가 행과 열 두 곳의 조건을 동시에 바꿉니다.
5. 최소 이동보다 먼저 안전한 해답 찾기
처음 도전할 때는 별 개수보다 완주 가능한 순서를 찾는 데 집중하세요. 해결한 뒤 같은 단계에 다시 도전하면서 불필요한 왕복이나 너무 일찍 제거한 승객을 찾아내면 자연스럽게 이동 수를 줄일 수 있습니다.
- 출구 열과 마지막 위치를 확인합니다.
- 현재 네 방향의 멈춤점을 확인합니다.
- 승객을 없앤 뒤에도 필요한 멈춤점이 남는지 봅니다.
- 한 수씩 실행하고 판을 다시 읽습니다.