https://school.programmers.co.kr/learn/courses/30/lessons/147354
완호가 관리하는 어떤 데이터베이스의 한 테이블은 모두 정수 타입인 컬럼들로 이루어져 있습니다. 테이블은 2차원 행렬로 표현할 수 있으며 열은 컬럼을 나타내고, 행은 튜플을 나타냅니다.
첫 번째 컬럼은 기본키로서 모든 튜플에 대해 그 값이 중복되지 않도록 보장됩니다. 완호는 이 테이블에 대한 해시 함수를 다음과 같이 정의하였습니다.
단순 구현 문제로 문제의 지시 사항을 차례대로 하나씩 구현하면 된다. XOR 비트 연산자 경우 대응되는 비트가 서로 다르면 1을 반환하고 같으면 0을 반환하는 논리 연산자로 ^ 연산자로 값을 계산하면 된다.
import java.util.*;
class Solution {
public int solution(int[][] data, int col, int row_begin, int row_end) {
int answer = 0;
Arrays.sort(data, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[col -1 ] == o2[col -1]) {
return o2[0] - o1[0];
}
return o1[col -1 ]- o2[col -1];
}
});
List<Integer> si = new ArrayList<>();
for (int i = row_begin - 1; i < row_end; i++) {
int sum = 0;
for (int j = 0; j < data[row_begin - 1].length; j++) {
sum += data[i][j] % (i + 1);
}
si.add(sum);
}
answer = si.get(0);
for (int i = 1; i < si.size(); i++) {
answer ^= si.get(i);
}
return answer;
}
}