study
하노이의 탑[프로그래머스]
Date: 2026-05-31 04:22
Update: 2026-06-01 08:15
하노이의 탑[프로그래머스]
접근법:
- 3개의 기둥이 있다. N개의 원판을 1번 기둥에서 3번기둥으로 이동시킨다.
- 옮겨야 할 원판이 N개라면 시작 기둥에서 목표 기둥으로 옮기고 끝낸다.
- 재귀
- 가장 큰 원판을 먼저 옮겨야 하므로 위에있는 원판 N-1개를 보조기둥으로 먼저 옮긴다.
- 시작기둥에 남은 가장 큰 원판 1개를 목표기둥으로 옮긴다.
- 보조기둥에 있는 원판들을 다시 목표기둥으로 옮겨 한다.
- 이때 보조기둥을 start로 쓰고 start로 사용했던 기둥을 보조기둥으로 사용한다.
#include <string>
#include <vector>
using namespace std;
void hanoi(int n, int start, int target, int mid, vector<vector<int>>& answer)
{
if(n == 1)
{
answer.push_back({start, target});
return;
}
hanoi(n-1, start, mid, target, answer);
answer.push_back({start, target});
hanoi(n-1, mid, target, start, answer);
}
vector<vector<int>> solution(int n) {
vector<vector<int>> answer;
hanoi(n, 1, 3, 2, answer);
return answer;
}
.gif)