https://www.acmicpc.net/problem/11729
public class BOJ_11729_하노이탑이동순서_G5 {
static void hanoi(int n, int from, int to) {
int mid = 6 - from - to;
if (n == 1) {
System.out.println(from + " " + to);
return;
}
if (n >= 2) {
hanoi(n - 1, from, mid);
System.out.println(from + " " + to);
hanoi(n - 1, mid, to);
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
System.out.println((int)Math.pow(2, N)-1);
hanoi(N, 1, 3);
}
}
├─ CALL hanoi(2, 1 → 2, mid=3)
│ ├─ CALL hanoi(1, 1 → 3)
│ │ ├─ MOVE 1 → 3
│ │ └─ RETURN hanoi(1)
│ │
│ ├─ MOVE 1 → 2
│ │
│ ├─ CALL hanoi(1, 3 → 2)
│ │ ├─ MOVE 3 → 2
│ │ └─ RETURN hanoi(1)
│ │
│ └─ RETURN hanoi(2)
│
├─ MOVE 1 → 3
│
├─ CALL hanoi(2, 2 → 3, mid=1)
│ ├─ CALL hanoi(1, 2 → 1)
│ │ ├─ MOVE 2 → 1
│ │ └─ RETURN hanoi(1)
│ │
│ ├─ MOVE 2 → 3
│ │
│ ├─ CALL hanoi(1, 1 → 3)
│ │ ├─ MOVE 1 → 3
│ │ └─ RETURN hanoi(1)
│ │
│ └─ RETURN hanoi(2)
│
└─ RETURN hanoi(3)
https://www.youtube.com/watch?v=AogMbfRwguk