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

Python을 사용하여 배열 게임의 승자를 찾는 프로그램

<시간/>

arr이라는 배열이 있고 고유한 요소가 포함되어 있고 또 다른 값 k가 있다고 가정합니다. 이제 배열의 처음 두 요소를 취하는 게임을 고려하십시오. 각 차례에서 우리는 arr[0]과 arr[1]을 비교하고 큰 값이 승리하여 위치 0에 남아 있고 작은 값이 배열의 끝으로 이동합니다. 이 게임은 가치가 '연속 라운드에서 승리하면 종료됩니다. 배열에서 승자를 찾아야 합니다.

따라서 입력이 arr =[1,5,6,3,4,2] 및 k =3과 같으면 출력은

이기 때문에 6이 됩니다.
  • 라운드 1, arr =[1,5,6,3,4,2], 승자 5, 5의 승 수는 1입니다.

  • 라운드 2, arr =[5,6,3,4,2,1], 승자 6, 6의 승리 횟수는 1입니다.

  • 라운드 3, arr =[6,3,4,2,1,5], 승자 6, 6의 승리 횟수는 2입니다.

  • 라운드 3, arr =[6,4,2,1,5,3], 승자 6, 6의 승리 횟수는 3입니다.

따라서 승자는 세 번(k =3)이기 때문에 6입니다.

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

  • l :=arr의 크기

  • 이전 :=arr[0]

  • 개수 :=0

  • 범위 1에서 l - 1에 있는 i에 대해 수행

    • prev> arr[i]이면

      • 개수 :=개수 + 1

    • 그렇지 않으면

      • 이전 :=arr[i]

      • 개수 :=1

    • 개수가 k와 같으면

      • 이전으로 돌아가기

  • 이전으로 돌아가기

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

def solve(arr, k):
   l = len(arr)
   prev = arr[0]
   count = 0
   for i in range(1, l):
      if prev > arr[i]:
         count+=1
      else:
         prev = arr[i]
         count = 1
      if count == k:
         return prev
   return prev
arr = [1,5,6,3,4,2]
k = 3
print(solve(arr, k))

입력

[1,5,6,3,4,2], 3

출력

6