Search

PGS 테이블 해시 함수

URL
태그
구현
정렬
브루트포스 알고리즘

문제 설명

주어진 테이블 데이터를 특정 컬럼 기준으로 정렬하고, 지정된 범위의 행에 대해 각 행의 나머지 합(S_i)을 계산한 뒤, 이를 XOR 연산으로 누적하여 해시 값을 반환하는 문제

예제 입력/출력

data
col
row_begin
row_end
result
[[2,2,6],[1,5,10],[4,2,9],[3,8,3]]
2
2
3
4

제약 조건

11 ≤ data의 길이 2,500≤ 2,500
11 ≤ data의 원소의 길이 500≤ 500

문제 풀이

접근1 브루트 포스 - O(NlogN)O(N \cdot logN)

풀이 코드

처음 제출한 코드
최적화 코드
def solution(data, col, row_begin, row_end): # 1. 데이터 정렬 # col-1로 정렬 (0-index), 같은 값일 경우 첫 번째 컬럼(기본키) 기준 내림차순 data.sort(key=lambda x: (x[col - 1], -x[0])) # 2. S_i 계산 및 XOR 누적 hash_value = 0 for i in range(row_begin, row_end + 1): # i번째 행의 나머지 합 계산 s_i = sum(value % i for value in data[i - 1]) # i-1로 0-index 보정 # XOR 누적 hash_value ^= s_i return hash_value
Python
복사

알아두면 좋은 내용

비트 논리 연산자 란?

참고 자료