11052번 - 카드 구매하기
dp 함수를 이해하는 데 조금 걸렸네요.
count를 돌려보니, n=1000인 경우에는 3.35억번 함수 호출을 하는군요.
n=500인 경우에는 0.42천만번 호출하고요. O(n^3)인 건 맞는 거 같네요.
dp가 제일 쉬운 방법이긴 합니다. 이런 문제는. 저 역시 dp로 구현했고요. 전형적인 냅색 문제인 거 같으니까요~
다만, 2번 과정에서 중복을 없애자!! 해서 가지치기 조건을 구현해보자~ 라고 생각하셨다면..
아래 질문에 대해서 생각을 해 보세요.
(1) 붕어빵 2개를 팔면 얻을 수 있는 이익이 100입니다. 붕어빵 3개를 팔면 50밖에 못 얻고요.
붕어빵 3개짜리는, 2개짜리를 넣을 때 보다, 이익이 작을 가능성이 크지 않을까요?
(2) 우선적으로 넣어봐야 할 붕어빵은 어떤 것일까요?
물론, 그리디로 풀라는 것은 아닙니다. 그리디로 풀릴 문제가 아니니까요.
어떻게 하면 가지치기를 더 잘 할 수 있을지 고민을 많이 해 보세요~
@chogahui05 문제를 좀 더 꼼꼼하게 분석해보고 효율적으로 풀도록 생각을 정리 해봐야 할 거 같네요ㅠㅠ 정말 감사합니다!!
댓글을 작성하려면 로그인해야 합니다.
goodinet 7년 전
dp로 구현했는데 1차원으로 구현한 코드는 아니고 2차원이긴 합니다만 시간초과가 날만한 코드인지 궁금합니다.
O(백만) 인 줄 알았는데 아닌가요...ㅜㅜ