Algorithm

프로그래머스 - 하노이 탑

b._.omi 2023. 6. 7. 18:46

 

문제

 

풀이

하노이 탑은 원판의 수 n, 시작하는 기둥 start, 중간의 거치는 기둥 mid, 도착할 기둥 end 총 4개의 요소가 필요하다

원판의 수가 1일 경우에는 start에서 바로 end로 넘기면 된다

아닐 경우에는 n-1개의 원판을 start에서 mid로 옮겨준다

n번째 원판을 start에서 end로 옮겨준다

mid에 있던 n-1개의 원판을 end로 옮겨준다

이 과정을 재귀함수를 통해 구현해준다

function solution(n) {
    let answer = [];
    
    let hanoi = (n, start, mid, end) => {
        if(n === 1) answer.push([start, end]);
        else {
        	// n-1개의 원판을 start에서 mid로 옮김
            hanoi(n-1, start, end, mid);
            // n번째 원판을 start에서 end로 옮김
            answer.push([start, end])
            // n-1개의 원판을 mid에서 end로 옮김
            hanoi(n-1, mid, start, end);
        }
    }
    
    hanoi(n, 1, 2, 3);
    
    return answer;
}