하노이의 탑

108번뇌·2021년 7월 25일
0

https://programmers.co.kr/learn/courses/30/lessons/12946

#include <string>
#include <vector>

using namespace std;
vector<vector<int>> vvTemp;

void dfs(int n, int start, int bypass, int to)
{
    vector<int> vTemp={start,to};
    if(n==1)
    {
        vvTemp.emplace_back(vTemp);
    }
    else
    {
        dfs(n-1, start, to, bypass);
        vvTemp.emplace_back(vTemp);
        dfs(n-1, bypass, start, to);
    }
}
    
vector<vector<int>> solution(int n) {
    
    dfs(n,1,2,3);
    
    return vvTemp;
}

이해하기 :
from bypass to 구조로
n-1개와 / 1개를 어디에 배치하냐에 따라
from bypass to 에서

1.from to bypass

2.bypass from to
1과 2로 분기되고,
1개를 움직이냐 아니면 몸체를 움직이냐에 따라
n=1 조건과 n-1조건으로 분기된다.

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글