반응형
https://www.acmicpc.net/problem/11729
11729번: 하노이 탑 이동 순서
세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로
www.acmicpc.net
import java.util.*;
public class Main {
static StringBuilder sb = new StringBuilder();
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N=sc.nextInt();
/*하노이 횟수 구하는 공식
- hanoi(N)=hanoi(N-1)+1
- a(n) = 2^n -1
*/
sb.append((int)(Math.pow(2, N)-1)).append("\n");
Hanoi(N,1,2,3);
System.out.println(sb);
}// main()
static void Hanoi(int n,int start, int mid, int end) {
if (n == 1) {
sb.append(start + " " + end + "\n");
return;
}
// 1. n-1개를 start에서 mid로 이동
Hanoi(n - 1, start, end, mid);
// 2. 1개를 start에서 end로 이동
sb.append(start + " " + end + "\n");
// 3. n-1개를 mid에서 end로 이동
Hanoi(n - 1, mid, start, end);
}//Hanoi()
}// class Main
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 14888 : 연산자 끼워넣기 (0) | 2023.02.07 |
---|---|
[Java] 백준 10844 : 쉬운 계단 수 (0) | 2023.02.04 |
[Java] 백준 2156 : 포도주 시식 (2) | 2023.02.03 |
[Java] 백준 1932 : 정수 삼각형 (0) | 2023.02.03 |
[Java] 백준 1697 : 숨바꼭질 (0) | 2023.02.02 |
댓글