프로그래머스[ LV2 | Python ] 테이블 해시 함수
업데이트:
링크
https://school.programmers.co.kr/learn/courses/30/lessons/147354
풀이
아래의 조건대로 정렬하고, 구현하는 정렬 문제.
- 해시 함수는
col
,row_begin
,row_end
을 입력으로 받습니다. - 테이블의 튜플을
col
번째 컬럼의 값을 기준으로 오름차순 정렬을 하되, 만약 그 값이 동일하면 기본키인 첫 번째 컬럼의 값을 기준으로 내림차순 정렬합니다. - 정렬된 데이터에서 S_i를 i 번째 행의 튜플에 대해 각 컬럼의 값을 i 로 나눈 나머지들의 합으로 정의합니다.
row_begin
≤ i ≤row_end
인 모든 S_i를 누적하여 bitwise XOR 한 값을 해시 값으로서 반환합니다.
j 를 인덱스로 사용하는 반복문의 인덱스만 주의해서 작성해주고, 문제가 말하는대로 구현하면 된다!
코드
Python
def solution(data, col, row_begin, row_end):
answer = 0
data.sort(key = lambda x: [x[col - 1], -x[0]])
for i in range(row_begin, row_end + 1):
total = 0
for j in data[i - 1]:
total += (j % i)
answer ^= total
return answer
댓글남기기