글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자입니다

 

목차

     

     


     

     

    [백준 11729번 C/C++] 하노이 탑 이동 순서

     

    https://www.acmicpc.net/problem/11729

     

    11729번: 하노이 탑 이동 순서

    세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로

    www.acmicpc.net


     

    해결전략

     

    재귀

    https://www.youtube.com/watch?v=aPYE0anPZqI&t=322s 

    https://www.youtube.com/watch?v=FYCGV6F1NuY 


     

    코드

     

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include <vector>
    using namespace std;
    
    int n, i=0, j=0, cnt=0;
    vector<pair<int, int>> v;
    
    void Hannoi(int n, int from, int goal, int other)//원반개수, 시작, 목표, 보조
    {
    	if (n == 0) return;
    
    	Hannoi(n-1, from, other, goal);//원반개수-1, 시작, 보조, 목표
    	v.push_back(pair<int, int>(from, other));
    	Hannoi(n-1, goal, from, other);//원반개수-1, 보조, 목표, 시작
    	cnt++;
    }
    
    int main()
    {	
    	scanf("%d", &n);
    	
    	Hannoi(n, 1, 2, 3);
    
    	printf("%d\n", cnt);
    
    	for(int i=0; i<v.size(); i++)
    	{
    		printf("%d %d\n", v[i].first, v[i].second);
    	}
    
    	return 0;
    }