https://www.acmicpc.net/problem/11729
import java.util.Scanner;
public class Main {
static StringBuilder sb = new StringBuilder();
static int count = 0;
// from : 출발지
// to: 목적지
// other: 둘다 아닌 곳
public static void hanoi(int n, int from, int to, int other) {
if (n == 0)
return;
else {
count++;
hanoi(n - 1, from, other, to);
//1. 출력 예시처럼 3개의 탑이 있다면, 2개의 탑을 목적지가 아닌곳으로 옮겨 놓음
sb.append(from + " " + to + "\n");
//2. 마지막 남은 탑을 목적지로 옮김.
hanoi(n - 1, other, to, from);
//3. 목적지가 아닌 곳 에 옮겨놓았던 탑들을 목적지로 옮김
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
hanoi(n, 1, 3, 2);
System.out.println(count);
System.out.println(sb);
}
}
'Algorithm by java' 카테고리의 다른 글
백준 9375 java 패션왕 신해빈 (0) | 2020.02.03 |
---|---|
백준 1181 단어 정렬 java (0) | 2020.01.23 |
백준 14889번 스타트와 링크java (0) | 2019.12.28 |
백준 2580 스도쿠 java (0) | 2019.12.26 |
백준 1987번 java 알파벳 (1) | 2019.12.23 |