이차원 배열을 DB테이블 처럼 쓴다고 한다.
행은 튜플, 열은 컬럼을 나타낸다.
col
, row_begin
, row_end
을 입력으로 받습니다.col
번째 컬럼의 값을 기준으로 오름차순 정렬을 하되, 만약 그 값이 동일하면 기본키인 첫 번째 컬럼의 값을 기준으로 내림차순 정렬합니다.row_begin
≤ i ≤ row_end
인 모든 S_i를 누적하여 bitwise XOR 한 값을 해시 값으로서 반환합니다.위 과정을 거친 값을 출력하면 된다.
간단한 구현 문제이다.
먼저 2번 조건에 맞게 sort를 해준다.
그리고 3,4번 과정을 진행하면 된다.
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) -> {return (o1[col-1] == o2[col-1] ? o2[0] - o1[0] : o1[col-1] - o2[col-1]);});
for(int i = row_begin - 1 ; i < row_end; i++){
int sum = 0;
for(int column : data[i]) sum += (column % (i + 1));
answer ^= sum;
}
return answer;
}
}
최근 Level2 문제 치고는 쉬운 편이었다.