문제 링크
- http://icpc.me/12013
문제 출처
- US Open 2016 Gold 3번
사용 알고리즘
- 구간 DP
시간복잡도
- O(N3)
풀이
dp[i][j] = [i, j]구간에서 만들 수 있는 유일한 정수 중 최댓값
유일한 정수라는 것은 숫자들을 합쳐서 남는 단 한 개의 정수를 의미합니다.
만약 한 개의 정수를 남기지 못한다면 0으로 합니다.
dp[i][i] = arr[i]인 것은 자명합니다.
dp[i][k]와 dp[k+1][j]가 같은 경우, 다시 말해 인접한 두 구간이 만들 수 있는 유일한 정수가 같다면 dp[i][j] = dp[i][k] + 1이 됩니다.
세제곱 dp를 돌려주면 됩니다.
전체 코드
1 |
|