코드
#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;
}
'C++ > programmers 코딩테스트(level 2) C++' 카테고리의 다른 글
[C/C++] programmers Level 2 주식가격 (0) | 2023.09.30 |
---|---|
[C/C++] programmers Level 2 기능개발 (0) | 2023.09.29 |
[C/C++] programmers Level 2 피보나치 수 (0) | 2023.09.27 |
[C/C++] programmers Level 2 숫자의 표현 (0) | 2023.09.25 |
[C/C++] programmers Level 2 올바른 괄호 (0) | 2023.09.15 |