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

Python에서 감소 및 재배열 후 최대 요소를 찾는 프로그램

<시간/>

arr이라는 배열이 있다고 가정합니다. 다음 조건을 충족하도록 arr에 대해 몇 가지 작업을 수행해야 합니다. -

  • arr의 첫 번째 요소는 1이어야 합니다.

  • 2개의 인접한 요소 간의 절대 차이는 최대 1이어야 합니다.

그리고 두 가지 작업이 있습니다. 우리는 이 두 가지 유형의 작업을 여러 번 수행할 수 있습니다. −

  • arr 값을 더 작은 양수로 줄입니다.

  • arr의 요소를 임의의 순서로 재정렬합니다.

주어진 조건을 만족하는 연산을 수행한 후 가능한 최대값을 arr에서 찾아야 합니다.

따라서 입력이 arr =[3,3,2,3,2]와 같으면 출력은 3이 됩니다. 왜냐하면 마지막 요소를 1로 줄인 다음 [1,2,3,3]과 같이 재정렬할 수 있기 때문입니다. ,3]이며 최대값은 3입니다.

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

  • 목록 정렬 arr

  • arr[0] :=1

  • 범위 1에서 arr - 1 크기의 i에 대해 수행

    • arr[i] :=(arr[i - 1] + 1) 및 arr[i]

      의 최소값
  • arr의 최대값을 반환합니다.

예시

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

def solve(arr):
   arr.sort()
   arr[0] = 1

   for i in range(1, len(arr)):
      arr[i] = min(arr[i - 1] + 1, arr[i])

   return max(arr)

arr = [3,3,2,3,2]
print(solve(arr))

입력

[3,3,2,3,2]

출력

3