20. Knapsack
PNU ALCALL 2017 SUMMER
20
• 배낭 채우기 문제와 유사
정해진 무게를 넘지 않으면서 최대 가치를 찾기
VS
정해진 예산를 넘지 않으면서 최대 선호도를 찾기
21. 차이점
PNU ALCALL 2017 SUMMER
21
• 중복된 초밥을 가져갈 수 있음
• M < 10^9 인데 필요한 DP 테이블 크기 : N x M
-> 슬라이딩 윈도우로 배열크기를 줄이는게 관건
22. 슬라이딩 윈도우
PNU ALCALL 2017 SUMMER
22
• T[i][j] = i번 초밥만큼 경우가 있을 때 j원으로 먹을 수 있는 최대 금액
테이블 크기 20 * 10^9 (20000MB)
• i:0->N
Prev[j] : i-1 번 초밥까지 먹었을 때 최대 선호도
T[j] : i번초밥까지 먹었을 때 최대 선호도
T[j] = max(T[j],T[j – price[i]]+ price[i]])
• 가격의 단위가 100이므로 100으로 나눠준 값을 index로 사용