9개의 댓글이 있습니다.
-
-
JongMan -
2^N * 3^N 이라고 해 봐야, 3 의 승수가 항상 N 이 아니라 남아 있는 사람의 수에 따라 줄어들기 때문에 속도에 큰 문제가 있지는 않을.. 겁니다. 3^10 = 59049 을 계산하는 경우는 전부 남아 있는 경우 한 경우밖에 없고, 3^9 = 19683 을 계산하는 경우는 열 개밖에 없고... 이렇게 다 더해보면 전체 연산의 수가 2^20 이 됩니다. 로컬에서는 최악의 테스트 케이스들도 금방 나오길래 용감히 섭밋했는데 쳇 ㅋㅋㅋㅋ
근데 r=s=p=0 때문에 삽질하다가 최적화고 뭐고 못해버렸네용. :-( 아웅 쥐쥐
15년 전 link
-
-
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
Being
먼저 간단히 생각할 수 있는 부분은, 현재 살아있는 사람이 누구누구이냐에 따라 게임 양상이 달라질 것이라는 점입니다. 즉, 현재 살아있는 사람을 표현하기 위해서 2^N 가지의 state가 존재하게 됩니다. 각 스테이트의 결론을 얻었다면, memoization을 사용하여 중복된 연산을 피할 수 있겠죠.
단순하게 접근한다면, 각 state에서 각 사람이 낼 수 있는 3^N가지의 조합을 모두 따라간 후에, 자신의 선택과 조합하여 나온 결과를 가지고
15년 전