https://school.programmers.co.kr/learn/courses/30/lessons/147354?language=java
배열 정렬까지는 잘 했는데 xor 연산자에서 막혔다.. 기초에서 막히다니. 앞으로 기초에서 틀리는 일이 없도록 하자!
- 제한 사항을 꼼꼼하게 읽자.
배열은 0부터 시작인데 주어지는 값들은 1부터이다. 따라서 col, row_begin, row_end 등의 값은 -1을 해줘야 한다.
- XOR 연산은 ^이루어 진다.
row_begin ≤ i ≤ row_end 인 모든 S_i를 누적하여 bitwise XOR 한 값을 해시 값으로서 반환합니다.
여기서 살짝 헷갈렸는데 즉 모든 S_i를 누적할때마다 그 값을 XOR해서 넣어주는 것이다.
for(int i = row_begin - 1; i < row_end; i++){
int sum = 0;
for(int j = 0; j < data[i].length; j++){
sum += (data[i][j] % (i+1));
}
answer ^= sum;
}
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];
}
});
for(int i = row_begin - 1; i < row_end; i++){
int sum = 0;
for(int j = 0; j < data[i].length; j++){
sum += (data[i][j] % (i+1));
}
answer ^= sum;
}
return answer;
}
}