요소 배열을 제공했으며 요소를 1씩 증가시켜 모두 동일하게 만들어야 합니다. 각 단계에서 n - 1개의 요소를 증가시킬 수 있습니다. 우리의 목표는 모든 배열 요소를 동일하게 만드는 데 필요한 총 연산 수를 계산하는 것입니다.
예를 들어 [1, 2, 3] 목록을 선택하면 모든 요소를 동일하게 만드는 데 세 번의 작업이 필요합니다. 문제에 대한 한 가지 해결책은 다음과 같습니다. 각 단계에서 가장 중요한 숫자를 찾고 나머지 요소를 1씩 증가시킵니다. 코드를 작성해 봅시다.
예시
def main(): # intializing the array arr = [1, 2, 3] # initializing operations count to 0 no_of_operations = 0 flag = 0 # performing the operations on array to make them equal while not are_equal(arr): flag = 1 # finding the maximum from the list maximum = max(arr) # incrementing all the elements except maximum for i in range(len(arr)): if arr[i] != maximum: arr[i] += 1 # incrementing the operations count by 1 no_of_operations += 1 print(no_of_operations) if flag == 0 else print(no_of_operations + 1) # checking whether all the elements are equal or not def are_equal(arr): global no_of_operations for i in range(len(arr) - 1): if arr[i] != arr[i + 1]: return False return True if __name__ == '__main__': main()
출력
위의 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
3
위의 방법은 큰 배열을 계산하는 데 더 많은 시간이 걸립니다. 배열의 합과 가장 작은 요소를 찾아 연산의 수를 찾을 수 있습니다.
- 배열의 합을 구합니다.
- 배열의 모든 요소 중 가장 작은 요소를 찾습니다.
- 표현식 sum - (길이 - 최소)에서 얻은 값을 인쇄합니다. .
예시
아래 코드를 참조하세요.
# initializing an array arr = [1, 2, 3] # length length = len(arr) # sum of element fo the array elements_sum = sum(arr) # smallest among all the elements smallest = min(arr) # calculating the number of operations print(elements_sum - (length * smallest))
출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
3
결론
우리가 논의한 두 번째 방법은 첫 번째 방법에 비해 더 쉽고 시간이 덜 걸립니다. 튜토리얼에서 의문점이 있으면 댓글 섹션에 언급하세요.