C++/programmers 코딩테스트(level 2) C++

[C/C++] programmers Level 2 하노이의 탑

CE : 하랑 2023. 9. 28. 14:53

 

 

 

 

코드

 

#include <vector>

using namespace std;

void hanoi_tower(vector<vector<int>>& answer, int n, int from, int tmp, int to){
    if(n==1){
        answer.push_back({from, to}); // from에 있는 한 개의 원판을 to로 옮긴다.
    }else{
        hanoi_tower(answer, n-1, from, to, tmp); // from의 맨 밑의 원판을 제외한 나머지 원판들을 tmp로 옮긴다.
        answer.push_back({from,to}); // from에 있는 한 개의 원판을 to로 옮긴다.
        hanoi_tower(answer, n-1, tmp, from, to); // tmp의 원판들을 to로 옮긴다.
    }
}

vector<vector<int>> solution(int n) {
    vector<vector<int>> answer;
    
    hanoi_tower(answer, n, 1, 2, 3);
    
    return answer;
    
}