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

Python에서 캔디 제거 게임에서 첫 번째 플레이어가 승리했는지 확인하는 프로그램은 무엇입니까?

<시간/>

사탕이라는 숫자 목록이 있고 누군가 친구와 게임을 하고 있다고 가정해 보겠습니다. 각 라운드에서 플레이어는 동일한 값을 가진 두 개의 연속 사탕을 제거할 수 있습니다. 그리고 사탕을 못 줍는 사람이 지고 그 플레이어 1이 먼저 시작하기 때문에 플레이어 1이 이길지 여부를 확인해야 합니다.

따라서 입력이 nums =[2, 2, 5]와 같으면 출력은 True가 됩니다. 마치 player1이 2를 선택하고 다른 플레이어가 사탕을 선택할 수 없는 것과 같습니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다.

  • 스택 :=새 스택

  • 회전 :=0

  • 숫자의 각 숫자에 대해 수행

    • 스택이 비어 있지 않고 스택의 맨 위가 num과 같으면

      • 스택에서 팝

      • 턴 :=턴 + 1

    • 그렇지 않으면

      • 숫자를 스택에 푸시

  • 회전이 홀수이면 true를 반환하고 그렇지 않으면 false를 반환합니다.


예시

class Solution:
   def solve(self, nums):
      stack = []
      turns = 0
      for num in nums:
         if stack and stack[-1] == num:
            stack.pop()
            turns += 1
         else:
            stack.append(num)

      return bool(turns & 1)

ob = Solution()
nums = [2, 2, 5]
print(ob.solve(nums))

입력

[2, 2, 5]

출력

True