업데이트:

최대 1 분 소요

링크

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

풀이

아래의 조건대로 정렬하고, 구현하는 정렬 문제.

  1. 해시 함수는 colrow_beginrow_end을 입력으로 받습니다.
  2. 테이블의 튜플을 col번째 컬럼의 값을 기준으로 오름차순 정렬을 하되, 만약 그 값이 동일하면 기본키인 첫 번째 컬럼의 값을 기준으로 내림차순 정렬합니다.
  3. 정렬된 데이터에서 S_i를 i 번째 행의 튜플에 대해 각 컬럼의 값을 i 로 나눈 나머지들의 합으로 정의합니다.
  4. 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

카테고리:

업데이트:

댓글남기기