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