Minimum Moves to Equal Array Elements II

ㅋㅋ·2022년 6월 30일
0

알고리즘-leetcode

목록 보기
21/135

정수형 벡터를 받고 정수 데이터는 1씩 증가시키거나 감소시킬 수 있다.

증가나 감소 때마다 1단계가 지났다고 판정한다.

벡터의 데이터들을 모두 같은 수로 맞출 때 가장 낮은 단계를 구하는 문제이다.

class Solution {
public:
    int minMoves2(vector<int>& nums) {
        
        int numsSize = nums.size();
        
        sort(nums.begin(), nums.end());
        
        auto dv = div(numsSize, 2);

        int quotient = dv.quot;
        int remainder = dv.rem;
        
        int median{0};
        if (remainder == 0)
        {
            median = ((nums[quotient] + nums[quotient - 1]) >> 1);
        }
        else
        {
            median = nums[quotient];
        }
        
        int result{0};
        for (int &num : nums)
        {
            result += abs(num - median);
        }
        
        return result;
    }
};

0개의 댓글