개발 블로그
article thumbnail
2228번. 구간 나누기
Algorithm/백준 알고리즘 2023. 10. 20. 14:48

아이디어 dp[i][j] 를 j 번째 숫자가 i번째 구간의 마지막 숫자일 때의 최대값이라고 정의. 이 때 선택할 수 있는 경우의 수는 1) j - 1 번째 숫자가 i 번째 구간의 마지막 숫자인 케이스에 j 번째 숫자를 이어 붙이기 2) i 번째 구간은 j 번째 숫자로만 구성 가 있다. 2) 의 경우 i - 1 번째 구간의 끝 숫자가 j - 2 인 것부터 차례 차례 역으로 탐색해가며 제일 큰 놈을 택하면 된다. 점화식으로 이를 만들어 본다면 dp[i][j] = max(dp[i][j - 1], dp[i - 1][j - 2], dp[i - 1][j - 3], ... ) + numbers[j] i 번째 구간에 대한 탐색을 진행할 때 최소한 2 * i - 1 번째 숫자부터 i 번째 구간이 될 수 있다. 따라서 d..