하노이의 탑의 경우 이를 패턴 확인 및 동적으로 접근하고자 했다가 함정에 빠졌다.

단순 옮기는 횟수를 구하는 것은 위에 처럼 하면 쉽게 나오지만

문제에서 원하는 것은 바로 실제로 옮긴 방법이기에 재귀로 접근하였다.


하노이는 중앙으로 옮기는 경우, 중앙에서 끝으로 옮기는 경우로 보는 것과

제일 큰수를 끝으로 옮기는 경우, 제일큰수-1 까지를 중앙으로 옮기는 경우, 두가지를 모두 복합적으로 생각해야한다.


또한 숫자를 옮긴다는 것을 start, temp, end로 구분하여 재귀를 돌때 이것이 변하게끔 조정하는게 핵심이다.

이부분이 제일 어렵다, 생각해내는게.

예를 들어 n=3인 경우에 1은 처음에 세번째 탑으로 가고 2를 옮긴 뒤 두번째 탑으로 가고 3을 옮긴뒤 첫번째 탑으로 간 다음 제일 마지막에 세번째 탑을 가야한다.

이렇게 탑을 움직이는 것을 start, end를 통해 표현하고 그럴 파라미터로 조정하게끔 하는것, 그것이 핵심이다.

그렇기에 재귀로 들어갈때 start, temp, end가 서로 다르게 바뀐다.




+ Recent posts