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

파이썬에서 숫자를 오름차순 또는 내림차순으로 정렬하는 데 필요한 최소 비용을 찾는 프로그램

<시간/>

nums라는 숫자 목록이 있다고 가정하고 목록을 임의의 순서(오름차순 또는 내림차순)로 정렬하려면 최소 비용을 찾아야 합니다. 여기서 비용은 요소의 이전 값과 새 값 간의 차이의 합계입니다.

따라서 입력이 [2, 5, 4]와 같으면 출력은 2가 됩니다.

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

  • temp:=배열 번호 복사
  • 목록 임시 정렬
  • c1:=0, c2:=0
  • n:=숫자 크기
  • 0에서 n 사이의 i에 대해
    • nums[i]가 temp[i]와 같지 않으면
      • c1 :=c1 + |nums[i]-temp[i]|
    • nums[i]가 temp[n-1-i]와 같지 않으면
      • c2 :=c2 + |nums[i]-temp[n-i-1]|
  • c1과 c2의 최소값을 반환

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

예시

class Solution:
   def solve(self, nums):
      temp=nums.copy()
      temp.sort()
      c1=0
      c2=0
      n=len(nums)
      for i in range(n):
         if nums[i]!=temp[i]:
            c1+=abs(nums[i]-temp[i])
         if nums[i]!=temp[n-1-i]:
            c2+=abs(nums[i]-temp[n-i-1])
      return min(c1,c2)
ob = Solution()
print(ob.solve([2, 5, 4]))

입력

[2, 5, 4]

출력

2