3*n개의 동전 더미가 있고 크기가 다양하다고 가정하고 세 명의 플레이어가 다음과 같은 게임을 하고 있다고 가정합니다. -
-
각 단계에서 player1은 3개의 동전 더미를 선택합니다.
-
자신이 선택한 것 중 Player2는 최대 동전 더미를 선택합니다.
-
Player1은 최대 동전 수를 가진 다음 더미를 선택합니다.
-
Player3이 마지막 더미를 선택합니다.
-
더 이상 동전 더미가 없을 때까지 이 단계를 반복합니다.
이제 Piles[i]가 i번째 더미에 있는 동전의 수인 더미라고 하는 정수 배열이 있는 경우 Player1이 가질 수 있는 최대 동전 수를 찾아야 합니다.
따라서 입력이 파일 =[2,4,1,2,7,8]과 같으면 출력은 9가 됩니다. 처음에는 삼중항(2,7,8)을 선택할 수 있고 Player2는 8을 선택할 수 있기 때문입니다. Player1은 7을 선택하고 2는 Player3을 선택합니다. 그런 다음 다시 삼중항(1,2,4)을 선택하고 Player2는 동전 4가 있는 더미를 선택하고 Player1은 2를 선택하고 Player3은 나머지 1을 선택합니다. 현재 Player1은 7+2 =9개의 코인을 보유하고 있으며 최대값입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
목록 더미 정렬
-
답변 :=0
-
더미의 크기가 0과 같지 않은 동안 수행
-
ans :=ans + 더미에서 두 번째 마지막 요소
-
더미에서 두 번째 마지막 요소 삭제
-
더미에서 마지막 요소 삭제
-
더미에서 첫 번째 요소 삭제
-
-
반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
def solve(piles): piles.sort() ans = 0 while(len(piles)!=0): ans = ans + piles[-2] del piles[-2] del piles[-1] del piles[0] return ans piles = [2,4,1,2,7,8] print(solve(piles))
입력
[2,4,1,2,7,8]
출력
9