문제링크 : https://www.acmicpc.net/problem/11058
#include <bits/stdc++.h>
using namespace std;
#define fastio ios_base::sync_with_stdio(0); cin.tie(0);
int n;
long long dp[101];
int main()
{
fastio;
cin >> n;
for (int i = 1; i <=6; i++) //초기값 선언
{
dp[i] = i;
}
for (int i = 7; i <= n; i++)
{
for (int j = 4; j < i; j++)
{
dp[i] = max(dp[i], dp[i - j] * (j - 1)); //점화식
}
}
cout << dp[n];
}
값의 범위가 크다보니 dp 배열을 long long으로 선언했다.
다음으로 처음 dp[1~6]까지는 초기값으로 1~6을 선언했다.
그다음 경우의 수가 2가지인데, 그대로 프린트만 하는 경우와 출력한 것을 복사하고 다시 붙여넣어 출력하는 경우다.
(A / Ctrl-A, Ctrl-C, Ctrl-V)
이에 대한 점화식을 세우고, 둘 중 큰 값을 출력하면 된다.
'백준 > 골드' 카테고리의 다른 글
[백준 20917번] 사회적 거리 두기 (C++) (0) | 2023.02.09 |
---|---|
[백준 24524번} 아름다운 문자열 (C++) (0) | 2023.02.07 |
[백준 9084번] 동전 (C++) (0) | 2023.02.05 |
[백준 12919번] A와 B 2 (C++) (0) | 2023.02.05 |
[백준 16120번] PPAP (C++) (0) | 2023.02.05 |