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]|
- nums[i]가 temp[i]와 같지 않으면
- 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