문제에서 말한대로 람다 값으로 col - 1 번째 기준 오름차순 정렬, 같다면 0번째 인덱스로 내림차순 정렬한다.
그 후, 정렬된 데이터를 기준으로 begin 부터 end 까지 슬라이싱 해준다.
정렬 + 슬라이싱된 데이터를 기준으로 순회하며 i로 나눈 나머지 값들을 계속해서 더해주면서 XOR 연산을 한다.
파이썬에서 XOR 연산자는 ^이다.
def solution(data, col, row_begin, row_end):
answer = 0
ls = []
data = sorted(data, key = lambda x : (x[col - 1], -x[0]))
data = data[row_begin - 1 : row_end]
for d in data:
s = 0
for a in d:
s += a % row_begin
if not ls:
ls.append(s)
else:
ls[0] = ls[0] ^ s
row_begin += 1
return ls[0]