사탕이라는 숫자 목록이 있고 누군가 친구와 게임을 하고 있다고 가정해 보겠습니다. 각 라운드에서 플레이어는 동일한 값을 가진 두 개의 연속 사탕을 제거할 수 있습니다. 그리고 사탕을 못 줍는 사람이 지고 그 플레이어 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