정수형 벡터를 받고 정수 데이터는 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;
}
};