1914 하노이 탑

2019. 7. 21. 13:26알고리즘/백준

하노이 탑 문제는 가장 유명한 재귀호출 문제 중 하나다

가장 왼쪽에 있는 원판들을 그대로 가장 오른쪽에 있는 원판으로 옮기는 작업이다. 중간에 있는 기둥을 사용해서 말이다

 

https://skmagic.tistory.com/257

과정은 대략 이렇다

1. 1번 기둥에 있는 원판 중 n-1개를 2번 기둥으로 옮긴다

2. 1번 기둥에 남은 가장 큰 원판을 3번 기둥으로 옮긴다

3. 2번 기둥에 있던 n-1개의 원판을 다시 3번을 목표로 옮긴다

 

정리하면 시작점과 도착점이 있고, 도달하기 위한 중간점을 이용해야만 한다. 원판이 모두 도착점에 도달할 때까지 재귀를 이용하면 된다

수학적으로 증명된 사실이지만 하노이탑의 총 이동횟수는 2^n-1이며, n이 64가 넘어갔을 때는 string을 이용해 큰 수 연산을 해야만 한다. 2^n은 10의 배수가 절대로 나올 수 없으므로 마지막 수만 1만 뺀다면 정답을 구할 수 있다

 

문제: https://www.acmicpc.net/problem/1914

깃허브주소: https://github.com/surinoel/boj/blob/master/1914.cpp

 

'알고리즘 > 백준' 카테고리의 다른 글

16947 서울 지하철 2호선  (1) 2019.07.23
4659 비밀번호 발음하기  (0) 2019.07.21
17352 여러분의 다리가 되어 드리겠습니다!  (0) 2019.07.20
17359 전구 길만 걷자  (0) 2019.07.20
2470 두 용액  (0) 2019.07.19