문제 링크

요약

  • 나중에 다시 한번 풀어보기

최종

  • Test case 만 보면 중간값으로 uni-value grid 를 만들 수 있을거 같아 보였는데, 근데 다른 edge case 가 있을 것 같아서 안되는줄 알았다.
  • 고민하다가 모르겠어서 정답 봤는데 중간값으로 하는게 맞더라.
class Solution {
public:
	int minOperations(vector<vector<int>>& grid, int x) {
		vector<int> all;
		int median;
		int cnt = 0;
 
		for (auto &row : grid) {
			for (int cell : row) {
				all.push_back(cell);
			}
		}
 
		sort(all.begin(), all.end());
 
		median = all[all.size() >> 1];
 
		for (int num : all) {
			int diff = abs(median - num);
 
			if (diff % x != 0) {
				return -1;
			}
 
			cnt += diff / x;
		}
 
		return cnt;
	}
};