하노이 타워는 컴퓨터 프로그래밍 시간에 예제로 배웠었다.
또한, 자료구조시간에도 배웠다. 그래서 이동 방법을 구현하는데는 큰문제는 없었다.
그치만 계속 문제가 발생했다. 시간초과가 뜨는것이다.
아마도
ios::sync_with_stdio(false);
cin.tie(0);
를 쓰지 않아서 그런것같다.
저거를 쓰기전에 scanf printf로 해보았는데, 잘 됐다.
앞으로는 꼭 써주자. 그리고 endl 도 쓰지 말라대? 암튼 앞으로 "\n"를 사용하도록 하지.
하노이 타워는 n개의 탑을 1에서 3으로 이동시킬려면, 1에서 2로 n-1개를 옮기고 n번째 돌(?)을 1에서 3으로 옮긴다. 그리고 n-1개를 2에서 3으로 옮기면 된다.
이걸 재귀로 부르면 된다.
구웃~!
#include<stdio.h>
#include<iostream>
using namespace std;
void print(int a, int c) {
cout<<a<<" "<<c<<"\n";
}
void hanoi(int n, int a, int b, int c) {
if (n == 1) {
print(a, c);
}
else {
hanoi(n - 1, a, c, b);
print(a, c);
hanoi(n - 1, b, a, c);
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int N, a = 1;
cin>>N;
for (int i = 0; i < N; i++) {
a *= 2;
}
cout<<a-1<<"\n";
hanoi(N, 1, 2, 3);
}
'Development > BOJ' 카테고리의 다른 글
우선순위 큐 비교연산자 사용법 (0) | 2020.02.20 |
---|---|
[BOJ] 백준 1074번 : Z C++ : 아주정은 (0) | 2020.02.20 |
[BOJ] 백준 16236번 : 아기상어 C++ : 아주정은 (0) | 2020.02.20 |
[BOJ] 백준 2740번 : 행렬 곱셈 C++ : 아주정은 (0) | 2020.02.20 |
[BOJ] 백준 3062번 : 수 뒤집기 C++ : 아주정은 (0) | 2020.02.20 |