Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python을 사용하여 얻을 수 있는 최대 동전 수를 찾는 프로그램

<시간/>

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