swjwpower   2년 전

제가 생각한 방법은

어짜피 탑 높이의 최댓값이 목적이기에 블럭을 놓는 순서는 상관이 없으므로 블럭을 하나씩 입력받은 순서대로 빼서

왼쪽탑과 오른쪽탑 둘중 하나에 놓습니다.

메모제이션은 최대 높이인 dp[500001]으로 두고

이 방법을 계속 진행하다가 높이가 같아지면 dp에 저장후 계속 진행

dp는 왼쪽탑의 높이를 기준으로 하고 오른쪽탑은 어짜피 지금까지 뽑은 블럭들 높이합 - 왼쪽탑 높이니까 생각할 필요가 없습니다.

블럭이 다 떨어지면 0반환이라는 걸로 시도를 해봣는데 역시나 안됩니다..

안되는 이유가 뭘까요?

flappybird   2년 전

저도 그런식으로 풀었는데 맞았습니다. 코드를 보여주실 수 있나요?

swjwpower   2년 전

제가 바보같이 블럭을 사용하지 않아도 된다는 사실을 잊고 코드를 짯엇네요..

좀더 해보도록 할게요

근데 제가 생각한 방법은 블럭을 무조건 다 사용한다는 가정하의 방법인데 어떻게 하신건지 힌트좀 주실수 있나요?

flappybird   2년 전

조금만 말해도 스포가 될것 같아서 간단히 말하자면





1~i까지의 블럭을 적절히 선택해서 두 탑에 배분해 사용했을때 높이차가 얼마일 때 둘중 큰것의 최대높이 이런식으로 dp식을 세웠어요

swjwpower   2년 전

감사합니다

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