반응형

문제 링크 : https://www.acmicpc.net/problem/2661

 

2661번: 좋은수열

첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내는 수열만 출력한다. 수열을 이루는 1, 2, 3들 사이에는 빈칸을 두지 않는다.

www.acmicpc.net

> 풀이

함수 재귀호출로 비교해줍시다

#include <cstdio>
#include <algorithm>
using namespace std;

int N, arr[80];

void algo(int cnt) {
        for (int i = 1; i <= cnt / 2; i++) {
                if (equal(arr + cnt - i, arr + cnt, arr + cnt - i * 2))
                        return;
        }

        if (cnt == N) {
                for (int i = 0; i < N; i++) printf("%d", arr[i]);
                exit(0);
        }

        for (int i = 1; i <= 3; i++) {
                arr[cnt] = i;
                algo(cnt + 1);
        }
}

int main() {
        scanf("%d", &N);
        algo(0);
        return 0;
}

(개발 환경 : vs code)

반응형

+ Recent posts