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

Python에서 모든 배열 요소를 동일하게 만드는 데 필요한 작업 수


요소 배열을 제공했으며 요소를 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

결론

우리가 논의한 두 번째 방법은 첫 번째 방법에 비해 더 쉽고 시간이 덜 걸립니다. 튜토리얼에서 의문점이 있으면 댓글 섹션에 언급하세요.