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