diff --git a/백준/Gold/11729. 하노이 탑 이동 순서/README.md b/백준/Gold/11729. 하노이 탑 이동 순서/README.md new file mode 100644 index 0000000..daf1d65 --- /dev/null +++ b/백준/Gold/11729. 하노이 탑 이동 순서/README.md @@ -0,0 +1,41 @@ +# [Gold V] 하노이 탑 이동 순서 - 11729 + +[문제 링크](https://www.acmicpc.net/problem/11729) + +### 성능 요약 + +메모리: 108792 KB, 시간: 1172 ms + +### 분류 + +재귀 + +### 제출 일자 + +2025년 11월 14일 00:19:47 + +### 문제 설명 + +
세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다.
+ +이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다.
+ +아래 그림은 원판이 5개인 경우의 예시이다.
+ +
첫째 줄에 첫 번째 장대에 쌓인 원판의 개수 N (1 ≤ N ≤ 20)이 주어진다.
+ +### 출력 + +첫째 줄에 옮긴 횟수 K를 출력한다.
+ +두 번째 줄부터 수행 과정을 출력한다. 두 번째 줄부터 K개의 줄에 걸쳐 두 정수 A B를 빈칸을 사이에 두고 출력하는데, 이는 A번째 탑의 가장 위에 있는 원판을 B번째 탑의 가장 위로 옮긴다는 뜻이다.
+ diff --git a/백준/Gold/11729. 하노이 탑 이동 순서/하노이 탑 이동 순서.py b/백준/Gold/11729. 하노이 탑 이동 순서/하노이 탑 이동 순서.py new file mode 100644 index 0000000..161cd01 --- /dev/null +++ b/백준/Gold/11729. 하노이 탑 이동 순서/하노이 탑 이동 순서.py @@ -0,0 +1,25 @@ +import sys +from collections import deque +sys.setrecursionlimit(10**8) + +input = sys.stdin.readline + +n = int(input()) +count = 0 +result = [] +def hanoi(n, start, end, temp): + global count, result + if n == 1: + count += 1 + result.append((start, end)) + return + hanoi(n-1, start, temp, end) + count += 1 + result.append((start, end)) + hanoi(n-1, temp, end, start) + +hanoi(n, 1, 3, 2) +print(count) +for s, e in result: + print(s, e) +