seongkwonii   4년 전

5 100
10 10000
50 50
40 100
10 90
9 101

10291이 나와야 하는데 10241이 나오네요...

근데 코드 어디가 틀린지 모르겠네요...

seongkwonii   4년 전

line 16, 17을 지워봤는데.. 시간초과가 아니라 틀렸습니다가 나오네요....;;;;;

sait2000   4년 전

각각 위에 거 아래 거 반례입니다. 지금 코드를 dp하려고 하면 cur와 weight가 모두 일치할 때만 예전에 계산한 값을 사용할 수 있습니다. weight를 적어두지 않으면 전에 계산했던 때보다 더 많이/적게 담을 수 있는데도 예전 결과를 쓰기 때문에 틀립니다.

seongkwonii   4년 전

weight를 적어두지 않으면.. 이라는게 무슨 말인지 잘 모르겠습니다

코드는 다시 이걸로 하고 있는데요

말씀하신 반례가 

4 100

10 100

50 5

40 90

9 2000

에서 나오는거 같아요

하나하나 출력하면서 보고 있긴한데.. 어렵네요 ㅠㅠ

sait2000   4년 전

f가 같은 cur값으로 호출돼도 weight값이 다르면 논리적으로 계산결과가 다를 수 있는데 전에 cur만 똑같았을 때의 값을 사용하니까 틀립니다. 아예 dp를 이차원 배열이나 map을 활용해서 cur과 weight이 둘 다 같을 때만 전에 계산한 결과를 사용해야 올바른 답이 나옵니다.

...그리고 그렇게 해서 시간 초과가 나면, 원래 이렇게 푸는 문제가 아니어서 그렇습니다.

댓글을 작성하려면 로그인해야 합니다.