[프로그래머스] 하노이의 탑(C++)

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;
}

 

 

해결 방법

재귀 함수를 이용하여 해결했다. 출발 지점, 보조 지점, 목적지 지점을 정해두고, 현재 원판 보다 작은 원판을 보조 지점으로 옮긴 후 현재 원판을 목적지 지점으로 옮기고 다시 작은 원판을 위로 쌓아올리도록 하였다. 

'개발 > 알고리즘' 카테고리의 다른 글

[백준] RGB거리(C++)  (1) 2025.05.04
[백준] 스타트와 링크(C++)  (2) 2025.04.25
[프로그래머스] 타겟 넘버(C++)  (1) 2025.04.19
[백준] 2606번: 바이러스(C++)  (2) 2025.04.18
[프로그래머스] 미로 탈출(C++)  (1) 2025.04.17
'개발/알고리즘' 카테고리의 다른 글
  • [백준] RGB거리(C++)
  • [백준] 스타트와 링크(C++)
  • [프로그래머스] 타겟 넘버(C++)
  • [백준] 2606번: 바이러스(C++)
Majangnan
Majangnan
  • Majangnan
    개발 모코코
    Majangnan
  • 전체
    오늘
    어제
    • 분류 전체보기 (58) N
      • 개발 (57) N
        • C# (10)
        • SQL (3)
        • Unity (8)
        • Unreal (10)
        • C++ (2)
        • Server (1)
        • DX11 (8)
        • 알고리즘 (14) N
  • 블로그 메뉴

    • 홈
    • 방명록
    • 깃허브
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    MAC
    슈팅게임
    블루프린트
    sql
    상속
    Mecanim
    3dlight
    언리얼
    dx3d
    Unity
    프로그래머스
    DirectX11
    알고리즘
    UnReal
    blueprint
    C#
    DX11
    코딩테스트
    c++
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Majangnan
[프로그래머스] 하노이의 탑(C++)
상단으로

티스토리툴바