테이블 해시 함수

홍범선·2023년 4월 12일
0

프로그래머스

목록 보기
11/18

테이블 해시 함수

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

문제

풀이

이 문제는 설명대로 구현하면 된다.
정렬조건이 있는데 col번째 컬럼의 값을 기준으로 오름차순 정렬을 하되, 만약 그 값이 동일하면 기본키인 첫 번째 컬럼의 값을 기준으로 내림차순 정렬해야한다.
이것을 파이썬 코드로 나타내면 다음과 같다.
1. 정렬

이제 row_begin ~ row_end까지 data를 문제에서 정의한 mod연산 처럼 나타내어야 한다.
2. mod 함수 정의

이제 row_begin ~ row_end까지 data를 mod함수로 리턴받은 값을 XOR연산을 해주면 된다.
3. XOR 연산하기

def solution(data, col, row_begin, row_end):    
    ## 첫 번째 조건 - 정렬
    data.sort(key = lambda x : (x[col - 1], -x[0])) 
    
    ## mod계산 함수 정의
    def cal(arr, i):
        answer = 0
        for each in arr:
            answer += each % i
        return answer
        
    answer = 0
    for i in range(row_begin, row_end+1):
        tmp = data[i-1]
        answer ^= cal(tmp, i)
    
    return answer

결과

AND 연산 => &
OR 연산 => |
XOR 연산 => ^
NOT 연산 => ~
쉬프트 연산 => >>, <<
비트 연산자를 알아두면 좋을 것 같다.

profile
알고리즘 정리 블로그입니다.

0개의 댓글