728x90
https://www.acmicpc.net/problem/11729
11729번: 하노이 탑 이동 순서
세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로
www.acmicpc.net
풀이)
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main_BJ_11729_하노이탑이동순서 {
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
sb.append((int)(Math.pow(2,n)-1)+"\n");
moving(n, 1, 2, 3);
System.out.println(sb);
}//main
private static void moving(int n, int start, int mid, int to){
if(n == 1){
sb.append(start+" "+to+"\n");
return;
}
moving(n-1, start, to, mid);
sb.append(start+" "+to+"\n");
moving(n-1, mid, start, to);
}//moving
}
재귀를 안다면 나름 간단하게 풀 수 있다.
대신, 하노이의 탑 규칙을 알아야 한다!
그리고, 시간 초과가 나올 수 있으므로 stringbuilder 사용해주면 간편!
728x90
'코테 > 백준' 카테고리의 다른 글
백준 1912 연속합(JAVA) (0) | 2023.06.03 |
---|---|
백준 15651 N과 M(3) (JAVA) (0) | 2023.05.31 |
백준 14889 스타트와 링크(JAVA) (0) | 2023.05.23 |
백준 4963 섬의 개수(JAVA) (0) | 2023.05.21 |
백준 15649 N과 M(1) (JAVA) (1) | 2023.05.16 |