문제 설명
•
주어진 테이블 데이터를 특정 컬럼 기준으로 정렬하고, 지정된 범위의 행에 대해 각 행의 나머지 합(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 |
제약 조건
•
data의 길이
•
data의 원소의 길이
문제 풀이
접근1 브루트 포스 -
풀이 코드
처음 제출한 코드
•
최적화 코드
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
복사
알아두면 좋은 내용
비트 논리 연산자 란?