알고리즘/BOJ

백준 11058번 크리보드

꾸준함. 2019. 1. 25. 00:38

문제 링크입니다: https://www.acmicpc.net/problem/11058


CtrlA + CtrlC + CtrlV를 한 뒤에는 복사한 문자열을 다시 붙여넣을 때 (CtrlA + CtrlC)를 누를 필요없이 CtrlV만 눌러도 된다는 부분만 이해했다면 쉽게 풀 수 있는 문제였습니다.


#include <iostream>

#include <algorithm>

#include <cstring>

using namespace std;

 

const int MAX = 100 + 1;

 

int N;

long long cache[MAX];

 

long long func(int idx)

{

        long long &result = cache[idx];

        if (result != -1)

                 return result;

       

        result = 1 + func(idx - 1); //A 추가

        //CtrlA + CtrlC + Σ(CtrlV)

        if (idx >= 3)

                 for (int i = 1; i <= idx - 2; i++)

                         result = max(result, func((idx - 2) - i) * (i + 1));

        return result;

}

 

int main(void)

{

        ios_base::sync_with_stdio(0);

        cin.tie(0);

        cin >> N;

 

        memset(cache, -1, sizeof(cache));

        cache[0] = 0;

        cout << func(N) << "\n";

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~


반응형