col 번째 컬럼값들을 기준으로 정렬하고 주어지는 매개변수 row_begin 에서 row_end까지 조건을 만족시켜준 값들의 xor값을 구하면 되는 문제이다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int idx;
int compare(vector<int> a, vector<int> b)
{
if (a[idx] == b[idx]) return a[0] > b[0];
return a[idx] < b[idx];
}
int solution(vector<vector<int>> data, int col, int row_begin, int row_end)
{
int answer = 0;
idx = col - 1;
sort(data.begin(), data.end(), compare);//조건대로 정렬
vector<int> s;
for(int i=row_begin-1;i<=row_end-1;i++)
{
int num = 0;
for(int j=0;j<data[i].size();j++)//문제 조건에 따른 실행
num += data[i][j] % (i+1);
s.push_back(num);
}
answer = s[0];
for(int i=1;i<s.size();i++)//xor 연산
answer = answer ^ s[i];
return answer;
}