

data[][col]을 기준으로 오름차순 정렬한다.
1-1. 이때, data[][col]이 같다면 data[][0]을 기준으로 내림차순 정렬한다.
이렇게 정렬한 배열에서 row_begin부터 row_end까지의 S_i를 구한다.
2-1. S_i = data[i][0] % i + data[i][1] % i + data[i][2] % i ......와 같은 방법으로 구한다.
이렇게 구한 S_i들을 XOR하여 answer을 구한다.
col 기준으로 오름차순 정렬한다. col값이 같다면 0번째의 값으로 내림차순한다.
S_i를 구해준다.
XOR(^) 해주어 반환한다.
import java.util.*;
class Solution {
public int solution(int[][] data, int col, int row_begin, int row_end) {
int answer = 0;
//정렬
//col을 중심으로 오름차순
//숫자가 같다면 첫번째 숫자를 기준으로 내림차순
Arrays.sort(data, (o1,o2) ->
o1[col-1] != o2[col-1] ? o1[col-1]-o2[col-1] : o2[0]-o1[0]);
for(int i=row_begin-1; i<row_end; i++) {
int si=0;
for(int j=0; j<data[i].length; j++) {
si += data[i][j] % (i+1);
}
answer = answer ^ si;
}
return answer;
}
}
정답!!!!!
비트연산자에 대해 알게되었다.
And: &
Or: |
Not: ~
XOR: ^