1. 제출 코드 (14분 32초 / 정렬, 구현)
import java.util.*;
class Solution {
public int solution(int[][] data, int col, int row_begin, int row_end) {
int answer = 0;
Arrays.sort(data, (o1, o2) -> {
if(o1[col - 1] == o2[col - 1]) {
return o2[0] - o1[0];
}
return o1[col - 1] - o2[col - 1];
});
for(int i = row_begin - 1; i <= row_end - 1; i++) {
int[] t = data[i];
int mod = 0;
for(int j = 0; j < t.length; j++) {
mod += t[j] % (i + 1);
}
answer ^= mod;
}
return answer;
}
}
2. 구현 로직
- data를 col번째 컬럼으로 오름차순 정렬하는데 동일한 값이 있다면 0번째 컬럼을 비교하여 내림차순 정렬
- row_begin에서 row_end까지 반복
- i번째 튜플을 가져온다
- 각 컬럼을 i로 나눈 나머지를 mod에 더한다
- answer와 mod를 XOR 연산하여 해시한다