문제풀이/백준

백준 1914 - 하노이탑

레옹 2021. 10. 6. 16:04
#include <iostream>
#include <cmath>
#include <vector>
#include <string>
#define _CRT_SECURE_NO_WARNINGS
using namespace std;

void path(int n, char start, char goal) {
	printf("%c %c\n", start, goal);
}
void hanoi(int n, char start, char goal, char assist) {
	if (n == 1) {
		path(n, start, goal);
	}
	else {
		hanoi(n - 1, start, assist, goal);
		path(n, start, goal);
		hanoi(n - 1, assist, goal, start);
	}
}
int main() {
	int n;
	cin >> n;

	string a = to_string(pow(2, n));
	int x = a.find('.'); // pow는 실수로 나와 소수점 찾기
	a = a.substr(0, x); // 소수점 앞자리만
	a[a.length() - 1] -= 1; // 마지막 인덱스 값 -1

	cout << a << endl;
	if(n <= 20)
	hanoi(n, '1', '3', '2');
	return 0;
}