TIL_250501

듀듀·2025년 5월 1일

spring_TIL

목록 보기
52/53

테이블 해시 함수

링크텍스트

문제 설명

  1. data[][col]을 기준으로 오름차순 정렬한다.
    1-1. 이때, data[][col]이 같다면 data[][0]을 기준으로 내림차순 정렬한다.

  2. 이렇게 정렬한 배열에서 row_begin부터 row_end까지의 S_i를 구한다.
    2-1. S_i = data[i][0] % i + data[i][1] % i + data[i][2] % i ......와 같은 방법으로 구한다.

  3. 이렇게 구한 S_i들을 XOR하여 answer을 구한다.


문제 풀이

정답 풀이

  1. col 기준으로 오름차순 정렬한다. col값이 같다면 0번째의 값으로 내림차순한다.

  2. S_i를 구해준다.

  3. XOR(^) 해주어 반환한다.


정답 코드

import java.util.*;
class Solution {
    public int solution(int[][] data, int col, int row_begin, int row_end) {
        int answer = 0;
        
        //정렬
        //col을 중심으로 오름차순
        //숫자가 같다면 첫번째 숫자를 기준으로 내림차순
        Arrays.sort(data, (o1,o2) ->
                   o1[col-1] != o2[col-1] ? o1[col-1]-o2[col-1] : o2[0]-o1[0]);
        
        for(int i=row_begin-1; i<row_end; i++) {
            int si=0;
            for(int j=0; j<data[i].length; j++) {
                si += data[i][j] % (i+1);
            }
            
            answer = answer ^ si;
        }
        
        return answer;
    }
}

정답!!!!!

알게 된 점

비트연산자에 대해 알게되었다.
And: &
Or: |
Not: ~
XOR: ^

0개의 댓글