개발/알고리즘
[프로그래머스] 하노이의 탑(C++)
Majangnan
2025. 4. 22. 20:12
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12946
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
코드 풀이
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<vector<int>> answer;
// 원판 개수, 시작 기둥, 보조 기둥, 목적지 기둥
void Hanoi(int n, int start, int via, int dest)
{
if (n == 1)
{
answer.push_back({ start, dest });
return;
}
Hanoi(n - 1, start, dest, via);
answer.push_back({ start, dest });
Hanoi(n - 1, via, start, dest);
}
vector<vector<int>> solution(int n)
{
Hanoi(n, 0, 1, 2);
return answer;
}
해결 방법
재귀 함수를 이용하여 해결했다. 출발 지점, 보조 지점, 목적지 지점을 정해두고, 현재 원판 보다 작은 원판을 보조 지점으로 옮긴 후 현재 원판을 목적지 지점으로 옮기고 다시 작은 원판을 위로 쌓아올리도록 하였다.