Algorithm/프로그래머스
[프로그래머스]연습문제 : 하노이의 탑 (level 3) (c++)
HBGB
2020. 7. 9. 00:26
https://programmers.co.kr/learn/courses/30/lessons/12946
코딩테스트 연습 - 하노이의 탑
하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대��
programmers.co.kr
분할 정복
#include <string>
#include <vector>
using namespace std;
void move_tower(vector<vector<int>>& answer, int n, int from, int to)
{
if (n == 0)
{
return;
}
// 1 ~ N -1 탑 이동 : from -> mid (to 경유)
move_tower(answer, n - 1, from, 6 - from - to);
// 마지막 원판 : from -> to 이동
answer.push_back({ from, to });
// 1 ~ N -1 탑 이동 : mid -> to (from 경유)
move_tower(answer, n - 1, 6 - from - to, to);
}
vector<vector<int>> solution(int n) {
vector<vector<int>> answer;
// 하노이탑 이동 : 1번 -> 3번 (2번 경유)
move_tower(answer, n, 1, 3);
return answer;
}
자세한 풀이는 BOJ하노이탑 문제 설명에 ㅎㅎ