하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대로 쌓여 있습니다. 게임의 목적은 다음 두 가지 조건을 만족시키면서, 한 기둥에 꽂힌 원판들을 그 순서 그대로 다른 기둥으로 옮겨서 다시 쌓는 것입니다. 한 번에 하나의 원판만 옮길 수 있습니다.큰 원판이 작은 원판 위에 있어서는 안됩니다. 하노이 탑의 세 개의 기둥을 왼쪽 부터 1번, 2번, 3번이라고 하겠습니다. 1번에는 n개의 원판이 있고 이 n개의 원판을 3번 원판으로 최소 횟수로 옮기려고 합니다. 1번 기둥에 있는 원판의 개수 n이 매개변수로 주어질 때, n개의 원판을 3번 원판으로 최소로 옮기는 방법을 return하는 solution를 완성해주세요.
제한사항
n은 15이하의 자연수 입니다.
2. 문제 해석
재귀....재귀다.
우선은 문제를 처음 봤을 때 재귀 쓰는건 알겠는데 result 값을 이해하는데 조금 시간이 걸렸다.
문제에 오타도 있었고(매우 핑계)
3개의 기둥 1번 기둥에 n개의 원판 존재 n개의 원판을 3번 기둥으로 옮기는 최소 횟수
result 값을 이해하기 위해 case들을 하나씩 작성해 보았다.
2개의 원판이 1번 기둥에 있으면 맨 아래 원판을 3번에 먼저, 그 다음 원판을 그 위에 옮겨야 한다.
그래서 [ [1,2], [1,3], [2,3] ] 값을 이해해 보면
[1,2]:1번 기둥에 있는 원판을 2번 기둥으로(맨 위 원판)
[1,3]: 1번 기둥에 있는 2번째 원판을 3번 기둥으로(맨 아래 원판)
[2,3]: 2번 기둥으로 임시로 옮겨 놓은 윗 원판을 3번 기둥으로 옮긴다.
를 말하는 것이다.
이를 하나씩 작성해 가면서 재귀를 어떻게 쓸 지 고민ㅇ..을 하다가 등비수열로 생각이 산으로 가버렸다.