- cache 사이즈를 미리 알 수 있음애도 굳이 100000001 만큼 두어서 비효율적입니다.
- 아이디어 자체는 맞으시나 구현에서 오류가 하나 있습니다.
44번째줄에서 증가시키시면서 값을 넣으셨는데, 47번줄에서 cache[j] != -1로 판단하셨으므로
그러면 i에 해당하는 물건이 하나만 존재하는게 아니고 엄청나게 많이 존재하게 되는겁니다.
무슨말이냐면 cache[1]이 현재 1이라고 봅시다. w가 1이고 v가 1인 물건을 넣는다고 하면
j가 1이고 cache[1]이 -1이 아니니 cache[2]에 값을 넣겠고,
그다음 j가 증가되고 cache[2]를 보니 또 -1이 아니니 cache[3]에 넣겠고.. 그런식입니다.
동일 물건을 여러번 넣게되는 꼴이 됩니다.
이에 따라 아래와 같은 반례가 있겠네요.
qlehfdl97 4년 전
안녕하세요 질문은 처음이라 혹시나 잘못된 부분있으면 지적 부탁드립니다. 빠르게 수정하겠습니다.
제가 푼 방법은 무게당 최대값만을 저장하면서 완전 탐색하는 방법을 사용했습니다.
cache[j]는 j무게일때 최대의 value로 갱신하며 전체 물건을 돈 후 최대값을 출력하는 방법입니다.
문제의 테스트 케이스 및 질문에 있는 테스트케이스는 모두 확인했습니다.
도움 부탁합니다.