하노이의 탑(Tower of Hanoi)
- 첫번째 기둥을 A, 두번째 기둥을 B, 세번째 기둥을 C
- 작은 원반부터 큰 원반의 순서대로 1, 2, 3, ,,, 이라고 칭한다고 가정할 때.
- hanoi(N, A, B, C)는 hanoi()함수를 통해 N개의 원반을 A, B, C기둥을 통해 이동시킨다고 할때 사용되는 함수이다.
// JavaScript
var hanoi = function(N, from, other, to) {
if(N===1){
div1.innerHTML += '원판[' + N + '] : ' + from + "--------->" + to + "<br>";
} else {
hanoi(N-1, from, to, other);
div1.innerHTML += '원판[' + N + '] : ' + from + "--------->" + to + "<br>";
hanoi(N-1, other, from, to);
}
}
원반이 3개인 경우 (7번 이동)
원반이 4개인 경우 (15번 이동)
하노이의 탑은 재귀함수
를 활용한 대표적인 문제이다.
재귀함수는 가장 나중에 호출된 함수가 먼저 실행되고 종료되어야 앞서 호출된 함수가 실행됨을 염두하자.LIFO(Last In First Out)
반응형
'알고리즘 > 기타 사이트 알고리즘' 카테고리의 다른 글
2019 카카오 개발자 겨울 인턴십 크레인 인형뽑기 게임 (0) | 2020.08.27 |
---|---|
2018 KAKAO BLIND 비밀지도 문제 (0) | 2020.08.26 |
프로젝트 오일러 02번 문제_피보나치 수열 (0) | 2020.08.23 |
[구름에듀_데일리알고리즘] KOI_2019 회문(미해결) (0) | 2019.08.13 |
[구름에듀_데일리알고리즘] KOI_2019 막대기 (0) | 2019.08.12 |