티스토리 뷰

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

 

코딩테스트 연습 - 하노이의 탑

하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대��

programmers.co.kr

재귀를 이용해 구현하였습니다.


C++ 소스 코드

#include <vector>
#include <string>
using namespace std;
vector<vector<int>> answer;
void hanoi(int n, int from, int to, int tmp){
    vector<int> temp = { from, to };
    if (n == 1) answer.push_back(temp);
    else{
        hanoi(n-1, from, tmp, to);
        answer.push_back(temp);
        hanoi(n-1, tmp, to, from);
    }
}
vector<vector<int>> solution(int n){
    hanoi(n, 1, 3, 2);
    return answer;
}

Swift 소스 코드

import Foundation

func solution(_ n:Int) -> [[Int]] {
    var answer: [[Int]] = []
    
    func hanoi(n: Int, from: Int, to: Int, via: Int){
        let tmp: [Int] = [from, to]
        if n == 1 {
            answer.append(tmp)
        }else {
            hanoi(n: n-1,from: from, to: via, via: to)
            answer.append(tmp)
            hanoi(n: n-1, from: via, to: to, via: from)
        }
    }
    
    hanoi(n: n, from: 1, to: 3, via: 2)
    
    return answer
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함