문제 출처
https://www.acmicpc.net/problem/11729
11729번: 하노이 탑 이동 순서
세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5
www.acmicpc.net
접근 방식 및 풀이
- 하노이탑.. 손으로 해봤지만 시간이 오래걸릴 것 같아 유투브 강의를 참고하였다.
> 정리내용
소스 코드
import java.util.Scanner;
public class Main {
static int n, cnt =0;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n =sc.nextInt();
hanoi(n, 1,2,3);
System.out.println(cnt);
System.out.println(sb.toString());
}
public static void hanoi(int n, int from , int by, int to){
cnt++;
if(n==1){
sb.append(from +" " + to + "\n");
return;
}else{
hanoi(n-1, from, to, by);
sb.append(from+" "+ to+"\n");
hanoi(n-1, by, from, to);
}
}
}
결과
'Competition > Baekjoon' 카테고리의 다른 글
[백준] 1744번 자바 수 묶기 (2) | 2020.04.04 |
---|---|
[백준] 11728번 자바 배열 합치기 (0) | 2020.04.02 |
[백준] 1992번 자바 쿼드트리 (0) | 2020.04.01 |