https://school.programmers.co.kr/learn/courses/30/lessons/147354
이 문제는 설명대로 구현하면 된다.
정렬조건이 있는데 col번째 컬럼의 값을 기준으로 오름차순 정렬을 하되, 만약 그 값이 동일하면 기본키인 첫 번째 컬럼의 값을 기준으로 내림차순 정렬해야한다.
이것을 파이썬 코드로 나타내면 다음과 같다.
1. 정렬
이제 row_begin ~ row_end까지 data를 문제에서 정의한 mod연산 처럼 나타내어야 한다.
2. mod 함수 정의
이제 row_begin ~ row_end까지 data를 mod함수로 리턴받은 값을 XOR연산을 해주면 된다.
3. XOR 연산하기
def solution(data, col, row_begin, row_end):
## 첫 번째 조건 - 정렬
data.sort(key = lambda x : (x[col - 1], -x[0]))
## mod계산 함수 정의
def cal(arr, i):
answer = 0
for each in arr:
answer += each % i
return answer
answer = 0
for i in range(row_begin, row_end+1):
tmp = data[i-1]
answer ^= cal(tmp, i)
return answer
AND 연산 => &
OR 연산 => |
XOR 연산 => ^
NOT 연산 => ~
쉬프트 연산 => >>, <<
비트 연산자를 알아두면 좋을 것 같다.