Algorithm/Programmers

[Programmers] 테이블 해시 함수 / ⭕

cks._.hong 2024. 10. 4. 23:07
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 제출 코드 (14분 32초 / 정렬, 구현)

import java.util.*;

class Solution {
    public int solution(int[][] data, int col, int row_begin, int row_end) {
        int answer = 0;

        Arrays.sort(data, (o1, o2) -> {
            if(o1[col - 1] == o2[col - 1]) {
                return o2[0] - o1[0];
            }
            return o1[col - 1] - o2[col - 1];
        });
        
        for(int i = row_begin - 1; i <= row_end - 1; i++) {
            int[] t = data[i];
            int mod = 0;
            for(int j = 0; j < t.length; j++) {
                mod += t[j] % (i + 1);
            }
            answer ^= mod;
        }
    
        return answer;
    }
}

 

2. 구현 로직

  1. data를 col번째 컬럼으로 오름차순 정렬하는데 동일한 값이 있다면 0번째 컬럼을 비교하여 내림차순 정렬
  2. row_begin에서 row_end까지 반복
    1. i번째 튜플을 가져온다
    2. 각 컬럼을 i로 나눈 나머지를 mod에 더한다
    3. answer와 mod를 XOR 연산하여 해시한다