프로그램 명: hanoi1
제한시간: 1 초
하노이 탑의 원판을 옮기던 승려들은 매일 같이 반복되는 작업에 지쳐 버렸다. 도대체 몇
번이나 원판을 더 옮겨야 작업이 끝나는 지 알고 싶어졌다.
예를 들어, <그림 1> 과 같이 원판이 놓여 있을 때 <그림 2> 와 같이 4 번 원
판을 옮기면 모든 원판을 3 번 기둥으로 옮길 수 있다.
세 기둥에 임의대로 놓여 있는(물론 작은 원판이 큰 원판 위에 있다.) 원판을 세 기둥 중
하나의 기둥으로 옮기고자 할 때 , 어느 기둥으로 옮기는 것이 원판의 이동 횟수가 최소가
되는지, 그 때의 이동 횟수는 몇 번인지 찾아내는 프로그램을 작성하시오. 물론 원판을 이동
하는 중에 큰 원판이 작은 원판 위에 놓여서는 안된다.
입력 형식
- 첫째 줄에는 원판의 개수 n(1<= n <= 30) 이 주어진다. 원판은 작은 것 부터 1 번 부터 N 번 까지 번호를 가진다.
- 둘째 줄에는 1 번 , 2 번 , 3 번 기둥에 놓여 있는 원판의 수가 차례대로 주어진다.
- 셋째 줄에는 1 번 기둥에 놓여 있는 원판의 번호,
- 네째 줄에는 2 번 기둥에 놓여 있는 원판의 번호,
- 다섯째 줄에는 3 번 기둥에 놓여 있는 원판의 번호가 주어진다. 원판의 번호는 큰 것 부터
차례대로 주어진다. 만약 어떤 기둥에 원판이 없다면 그 줄은 빈 줄로 주어진다.
출력 형식
- 첫째 줄에는 원판의 이동 횟수가 최소가 되도록 하여 작업을 마쳤을 때 원판이 놓이게 되는 기둥의 번호를 출력한다.
- 둘 째 줄에는 그 때의 원판 이동 횟수 를 출력한다. 기둥의 번호는 1, 2, 3 중 하나이다.
입출력 예
입력
7
2 1 4
2 1
3
7 6 5 4
출력
3
4
출처:
[질/답]
[제출 현황]
[푼 후(0)]