Amal과 Bimal이 하나의 배열 A와 몇 개의 숫자가 있는 게임을 하고 있다고 가정합니다. 게임 규칙은 다음과 같습니다.
- Bimal은 항상 시작됩니다.
- 매 턴마다 한 플레이어는 배열에서 최대 요소를 삭제하고 삭제된 요소의 오른쪽에 있는 다른 모든 요소도 삭제됩니다.
- 교대로 연주
- 남은 요소를 모두 제거하는 플레이어가 게임에서 승리합니다.
따라서 입력이 nums =[5,2,6,3,4]와 같으면 출력은 Amal이 됩니다. 왜냐하면 처음에는 Bimal이 [6,3,4]를 제거하므로 배열은 [5,2]가 되기 때문입니다. 그러면 Amal이 모두 제거하므로 그가 승자가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 최대:=-1
- 카운트:=0
- 숫자 단위로 각각의 a에 대해 다음을 수행합니다.
- 최대값이 0이 아닌 경우
- 카운트 :=카운트 + 1
- 최대:=
- 최대값이 0이 아닌 경우
- 카운트 모드 2가 0과 같으면
- "아말" 반환
- "비말" 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(nums): maximum = -1 count = 0 for a in nums: if a > maximum: count += 1 maximum = a if count % 2 == 0: return "Amal" return "Bimal" nums = [5,2,6,3,4] print(solve(nums))
입력
[5,2,6,3,4]
출력
Amal