나의 개발일지

[프로그래머스] Lv.2 테이블 해시 함수 [Python, 파이썬] 본문

프로그래머스

[프로그래머스] Lv.2 테이블 해시 함수 [Python, 파이썬]

YoonJuHan 2024. 7. 15. 15:27
  • 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/147354
  • 🔑 정렬, 비트연산 XOR
    • 먼저 이 문제에서 컬럼이나 튜플의 순서는 0이 아닌 1부터 시작한다.
    • 2단계 정렬 : col 번째 값을 기준으로 오름차순, col 번째 값 동일하면 기본키 첫 번째 값 기준 내림차순 정렬
      • 음수 기준으로 정렬하면 내림차순 정렬 가능 → -x[0]
    • 3단계 나머지들의 합 : 정렬된 리스트 순회하면서 row_begin ~ row_end까지 튜플에 대해 나머지 합 계산 후 리스트에 저장
    • 4단계 저장된 나머지 합들 XOR 연산 : 나머지 합 저장된 리스트 순회하면서 모두 XOR 연산
      • answer ^= S[i]로 answer에 XOR 연산된 값 저장

 

def solution(data, col, row_begin, row_end):
    
    # 2단계
    data.sort(key=lambda x : (x[col-1], -x[0])) # col 번째 오름차순, 같으면 기본키 내림차순
    
    # 3단계
    S = []
    for i in range(row_begin-1, row_end):
        s = 0
        for j in data[i]:
            s += j % (i+1)
        S.append(s)
    
    # 4단계
    answer = S[0]
    for i in range(1, len(S)):
        answer ^= S[i]
    
    return answer
Comments