[JavaScript] 프로그래머스 하노이의 탑 LEVEL3

김예진·2021년 2월 14일
1

코딩 테스트

목록 보기
38/42

문제출처

const answer = [];

const hanoi = (n, src, dst, mid) => {
    if (n === 1) answer.push([src, dst]);
    else {
        hanoi(n - 1, src, mid, dst);
        answer.push([src, dst]);
        hanoi(n - 1, mid, dst, src);
    }
}

function solution(n) {
    hanoi(n, 1, 3, 2);
    
    return answer;
}

풀이

hanoi 함수를 재귀함수로 돌린다.

  1. A 기둥에 있는 n-1 번째 원판을 B 기둥으로 이동시킨다.
  2. A 기둥에 있는 n번째 원판을 C 기둥으로 이동시킨다.
  3. B 기둥에 있는 n-1번째 원판을 C 기둥으로 이동시킨다.

n이 1일 경우엔 그냥 src -> dst로 원반을 옮기면 된다.
n >= 2 일 경우엔 src -> dst로 원반을 옮기기 위해 mid에 돌을 잠시 옮겨두었다가 가야한다.

결론은, 그냥 외우자. 모르겠다!

참고1
참고2

1개의 댓글

comment-user-thumbnail
2022년 7월 22일

ㅋㅋㅋㅋㅋㅋ 결론 너무 공감 됩니다

답글 달기