1126번 - 같은 탑
제가 생각한 방법은
어짜피 탑 높이의 최댓값이 목적이기에 블럭을 놓는 순서는 상관이 없으므로 블럭을 하나씩 입력받은 순서대로 빼서
왼쪽탑과 오른쪽탑 둘중 하나에 놓습니다.
메모제이션은 최대 높이인 dp[500001]으로 두고
이 방법을 계속 진행하다가 높이가 같아지면 dp에 저장후 계속 진행
dp는 왼쪽탑의 높이를 기준으로 하고 오른쪽탑은 어짜피 지금까지 뽑은 블럭들 높이합 - 왼쪽탑 높이니까 생각할 필요가 없습니다.
블럭이 다 떨어지면 0반환이라는 걸로 시도를 해봣는데 역시나 안됩니다..
안되는 이유가 뭘까요?
저도 그런식으로 풀었는데 맞았습니다. 코드를 보여주실 수 있나요?
제가 바보같이 블럭을 사용하지 않아도 된다는 사실을 잊고 코드를 짯엇네요..
좀더 해보도록 할게요
근데 제가 생각한 방법은 블럭을 무조건 다 사용한다는 가정하의 방법인데 어떻게 하신건지 힌트좀 주실수 있나요?
조금만 말해도 스포가 될것 같아서 간단히 말하자면
1~i까지의 블럭을 적절히 선택해서 두 탑에 배분해 사용했을때 높이차가 얼마일 때 둘중 큰것의 최대높이 이런식으로 dp식을 세웠어요
감사합니다
댓글을 작성하려면 로그인해야 합니다.
swjwpower 2년 전
제가 생각한 방법은
어짜피 탑 높이의 최댓값이 목적이기에 블럭을 놓는 순서는 상관이 없으므로 블럭을 하나씩 입력받은 순서대로 빼서
왼쪽탑과 오른쪽탑 둘중 하나에 놓습니다.
메모제이션은 최대 높이인 dp[500001]으로 두고
이 방법을 계속 진행하다가 높이가 같아지면 dp에 저장후 계속 진행
dp는 왼쪽탑의 높이를 기준으로 하고 오른쪽탑은 어짜피 지금까지 뽑은 블럭들 높이합 - 왼쪽탑 높이니까 생각할 필요가 없습니다.
블럭이 다 떨어지면 0반환이라는 걸로 시도를 해봣는데 역시나 안됩니다..
안되는 이유가 뭘까요?