좌표를 정렬된 상태로 생각한다면, dp 정의를 아래와 같이 생각해 볼 수 있습니다.
dp[left][right][pos] = 내가 [left, right] 범위의 김치를 모두 배달했고, pos 위치(left or right 중 한 곳)에 있을때, 나머지 김치를 배달할 때의 쉰 정도의 최소값
이때의 공간 복잡도는 O(N^2) 입니다.
남은것은 이제 left-1 과 right + 1 둘 중 한곳으로만 보내준다면, 재귀 함수안에 반복없이 문제를 해결할 수 있습니다.
이 때의 시간복잡도는 상태공간 O(N^2)과 거리 계산 O(N)으로 O(N^3) 이 됩니다.
여기서 거리 계산을 부분합을 통해 미리 구해준다면, 시간복잡도를 O(N^2)로 줄일 수 있습니다.
mypark3424 8년 전
몇일동안 고민해봐도 시간초과를 줄일 수 있는 방법이 떠오르지 않습니다.
도와주시면 감사드리겠습니다!!