[programmers/py] 테이블 해시 함수

승민·2024년 4월 17일

알고리즘

목록 보기
105/171

테이블 해시 함수

https://school.programmers.co.kr/learn/courses/30/lessons/147354

문제 설명

  1. 해시 함수는 col, row_begin, row_end을 입력으로 받습니다.
  2. 테이블의 튜플을 col번째 컬럼의 값을 기준으로 오름차순 정렬을 하되, 만약 그 값이 동일하면 기본키인 첫 번째 컬럼의 값을 기준으로 내림차순 정렬합니다.
  3. 데이터에서 S_i를 i 번째 행의 튜플에 대해 각 컬럼의 값을 i 로 나눈 나머지들의 합으로 정의합니다.
  4. _begin ≤ i ≤ row_end 인 모든 S_i를 누적하여 bitwise XOR 한 값을 해시 값으로서 반환합니다.

풀이

def solution(data, col, begin, end):
    answer = 0
    data.sort(key = lambda x : (x[col-1], -x[0]))
    for i in range(begin-1, end):
        total = 0
        for j in data[i]:
            total += (j%(i+1))
        answer ^= total
    
    return answer

0개의 댓글