본문 바로가기
PS/BOJ

[백준] 11729. 하노이 탑 이동 순서(c++)

by backend 개발자 지망생 2025. 3. 2.

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

일반 항을 먼저 만들었다가..

탑의 start, end가 어떻게 되는지가 더 중요한 문제였던 것 같다.

기존의 반복문(o(n))을 pow로 바꿔서 제출했다가, 캐스팅을 하지 않아서 틀렸다. double인 것을 유념하기


1. 일반항

2. 재귀함수 안의 로직

 


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <limits.h>
#include <queue>
#include <set>
#include <math.h>
#include <stack>
#include <deque>
#define ll long long
using namespace std;

void cal(int n, int start, int mid, int end) {
    if (n == 1) {
        cout << start << ' ' << end << '\n';
        return;
    }

    cal(n - 1, start, end, mid);

    // start의 제일 아래 값을 end로 옮겨주는 과정
    cout << start << ' ' << end << '\n';

    cal(n - 1, mid, start, end);
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int n, count = 0;

    cin >> n;

    for (int i = 1; i <= n; i++) {
        count = 2 * count + 1;
    }

    cout << count << '\n';

    cal(n, 1, 2, 3);

    return 0;
}

'PS > BOJ' 카테고리의 다른 글

[백준] 13549. 숨바꼭질3(c++)  (0) 2025.03.11
[백준] 1074. Z(c++)  (0) 2025.03.02
[백준] 1629. 곱셈(c++)  (0) 2025.03.02
[백준] 6593. 상범 빌딩(c++)  (0) 2025.03.02
[백준] 2468. 안전영역(c++)  (0) 2025.03.02