참조 범위 확인
현재 상태가 바로 이전 행만 참조하면 rolling array가 가능하고, 더 오래된 값이 필요하면 어렵다.
DP를 2차원에서 1차원으로 줄이면 메모리는 줄지만 참조 순서와 복원 정보가 사라질 수 있다. 어떤 정보를 버리는지 명확해야 한다.
현재 상태가 바로 이전 행만 참조하면 rolling array가 가능하고, 더 오래된 값이 필요하면 어렵다.
1차원 압축에서 앞에서 돌면 같은 단계 값을 다시 써 버릴 수 있다.
최댓값만 남기면 어떤 선택을 했는지 알 수 없으므로 parent나 choice 배열을 별도로 저장한다.
// before optimizing memory:
// print dp table for n <= 4
// compare each transition with handwritten table