구현
문제에 있는 설명을 그대로 해석해서 구현하기만 하면 되는 문제입니다.
1. 주어진 데이터를 col-1번째 원소 기준으로 오름차순 정렬하고, 동일한 데이터가 있다면 0번째 원소를 기준으로 내림차순 정렬합니다.
2. 정렬된 데이터에서 row_begin-1부터 row_end까지의 데이터 튜플을 각각의 인덱스로 나누고 더해줍니다.
3. 더한 값을 정답변수와 누적 XOR을 합니다.
XOR 부분은 구글에서 XOR연산자를 검색해서 찾아보면 됩니다.
(저도 처음 사용해봤습니다...ㅎ)
function solution(data, col, row_begin, row_end) {
let answer = 0;
// 데이터를 col-1 기준으로 오름차순 정렬
// 동일한게 있다면 0번째 원소를 기준으로 내림차순 정렬
const sort_data = data.sort((a, b) => {
if (a[col - 1] < b[col - 1]) {
return a[col - 1] - b[col - 1];
} else if (a[col - 1] === b[col - 1]) {
return b[0] - a[0];
}
});
//
for (let i = row_begin; i <= row_end; i++) {
// 정렬된 데이터에서 i-1번째부터 각 값을 i로 나누어서 더하기
const temp = sort_data[i - 1].reduce((a, c) => a + (c % i), 0);
// ^는 XOR연산자, answer에 누적하기
answer ^= temp;
}
return answer;
}