https://programmers.co.kr/learn/courses/30/lessons/12946
분할 정복
#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하노이탑 문제 설명에 ㅎㅎ
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스]2019 카카오 개발자 겨울 인턴십 : 불량 사용자 (level 3)(c++) (0) | 2020.07.09 |
---|---|
[프로그래머스]Summer/Winter Coding(~2018) : 방문 길이 (level 3) (c++) (0) | 2020.07.09 |
[프로그래머스]연습문제 : 야근 지수 (level 3) (c++) (0) | 2020.07.08 |
[프로그래머스]2020 카카오 인턴십 : 수식 최대화 (level 2) (c++) (0) | 2020.07.07 |
[프로그래머스]2020 카카오 인턴십 : 키패드 누르기 (level 1) (c++) (0) | 2020.07.07 |
댓글