문제 링크입니다: 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
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2828번 사과 담기 게임 (0) | 2019.01.26 |
---|---|
백준 11333번 4*n 타일링 (4) | 2019.01.25 |
백준 2568번 전깃줄-2 (0) | 2019.01.24 |
백준 14002번 가장 긴 증가하는 부분 수열 4 (0) | 2019.01.24 |
백준 14003번 가장 긴 증가하는 부분 수열 5 (2) | 2019.01.24 |