정답 코드
- 어린이 장난감 하노이 탑을 옮기는 최적 방법 구하는 문제
- 재귀함수 이해 필요
- 그냥 출력하면 출력이 길어져서 시간 초과 발생
import java.io.*;
public class Main {
static BufferedReader br;
static BufferedWriter bw;
static StringBuilder sb;
static int cnt;
public static void main(String[] args) throws IOException {
br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
fun(Integer.parseInt(br.readLine()), 1, 2, 3);
System.out.println(cnt);
System.out.println(sb.toString());
}
private static void fun(int n, int from, int tmp, int to) {
cnt++;
if (n == 1) {
sb.append(from + " " + to + "\n");
return;
}
fun(n - 1, from, to, tmp);
sb.append(from + " " + to + "\n");
fun(n - 1, tmp, from, to);
}
}