컴퓨터기본/문제풀이

[백준] 11729. 하노이 탑 이동 순서

차가운오미자 2021. 8. 21. 11:07

https://www.acmicpc.net/problem/11729

 

11729번: 하노이 탑 이동 순서

세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로

www.acmicpc.net

 

재귀의 기본 of 기본인 하노이 탑 옮기기이다.

#include <iostream>
#include <vector>

using namespace std;

int cnt;
vector<pair<int, int> > answer;

void Hanoi(int from, int by, int to, int num){

	if(num>0){
		Hanoi(from, to, by, num-1);
		answer.push_back(make_pair(from, to));
		cnt++;
		Hanoi(by, from, to, num-1);
	}
}

int main(void){
	
	int num = 0;
	cin >> num;
	Hanoi(1, 2, 3, num);
	cout << cnt << "\n";
	for(int i = 0; i<answer.size(); i++){
		cout << answer[i].first << " " << answer[i].second << "\n";
	}
}