결정 변수 찾기
문제의 답이 위치, 개수, 남은 용량, 마지막 선택 중 무엇에 따라 달라지는지 고른다.
축 후보1차원과 2차원 DP의 차이는 코드 모양이 아니라 다음 값을 계산할 때 어떤 이전 정보가 필요한가에서 나온다. 상태 축, 전이 의존성, 메모리 제한을 함께 확인한다.
문제의 답이 위치, 개수, 남은 용량, 마지막 선택 중 무엇에 따라 달라지는지 고른다.
축 후보dp[i] 또는 dp[i][j]가 어떤 이전 칸을 읽는지 화살표로 확인한다.
전이 방향같은 행의 이전 값이 필요한지, 이전 행만 필요한지에 따라 증가·감소 순회를 정한다.
중복 사용 방지최댓값만 필요한지 선택 경로까지 필요한지에 따라 부모 정보를 남길지 결정한다.
값과 경로 분리0/1 knapsack: for w from W down to weight
unbounded: for w from weight up to W
path restore: keep parent or decision table