Skip to content

Latest commit

 

History

History
37 lines (30 loc) · 1.46 KB

풀이_LC453.md

File metadata and controls

37 lines (30 loc) · 1.46 KB

LeetCode 453. Minimum Moves to Equal Array Elements

  • Date : 2021.09.26(일)
  • Time : 20분

Problem

  • Given an integer array nums of size n, return the minimum number of moves required to make all array elements equal. In one move, you can increment n - 1 elements of the array by 1.

Constraints

  • n == nums.length
  • 1 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9 The answer is guaranteed to fit in a 32-bit integer.

Example

  • Input: nums = [1,2,3]
  • Output: 3
  • Explanation: Only three moves are needed (remember each move increments two elements):
    [1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]
    



풀이

    def minMoves(self, nums: List[int]) -> int:
        num_min = sys.maxsize
        sum = 0
        for i in nums:
            if i<num_min: num_min = i
            sum += i
        return sum - num_min*len(nums)

: 이 문제는 n-1개의 요소를 +1씩 시켜서 모든 배열이 같은 숫자를 가지게 만드는 문제이다. sys.maxsize는 int의 최대값을 넣어준다. for 문으로 배열을 돌면서 만약에 배열의 값이 더 작다면 최소값으로 업데이트 해준다. 그리고 sum에 현재 값을 더해준다. 결국 sum은 모든 배열 요소의 합이 되는것이다. 이 배열의 전체합에서 최소값과 배열의 길이를 곱한 값을 빼주면 된다. 최소값이 전체 합을 따라가기 위해서 얼마의 차이가 필요한지의 해설로 푼 문제이다.