Algorithms/Java

99클럽 코테 스터디 6일차 TIL + 테이블 해시 함수 (java)

Jenn28 2024. 7. 27. 21:03

 

💡 문제

권장 시간

  • 1시간

소요 시간

  • 1시간

풀이 코드

import java.util.*;

class Solution {
    int answer = 0;
    
    public int solution(int[][] data, int col, int row_begin, int row_end) {
        
        // col번째 컬럼 값 기준 오름차순 정렬
        // 값이 같으면 기본키 값 기준 내림차순 정렬
        Arrays.sort(data, (o1, o2) -> {
            if (o1[col-1] == o2[col-1]) {
                return o2[0] - o1[0];
            }
            return o1[col-1] - o2[col-1];
        });
        
        // SUM(i번째 행에 대한 각 컬럼의 값 % i)
        HashMap<Integer, Integer> map = new HashMap<>();
        int c = data[0].length;
        for (int i = row_begin - 1; i < row_end; i++) {
            for (int j = 0; j < c; j++) {
                map.put(i, map.getOrDefault(i, 0) + (data[i][j] % (i + 1)));   
            }
        }

        map.forEach((key, value) -> {
            answer ^= value;
        });
        
        return answer;
    }
}

 

문제 이름이 해시 테이블 함수라서 해시를 써야만할 것 같았다.

그래서 SUM(i번째 행에 대한 각 컬럼의 값 % i) 구할 때 기계적으로(?) 해시맵으로 구현했는데..

제출하니 시간이 넘 오래걸림…ㅜㅜ

 

다른 사람 코드 보니까 그냥 배열로 구현했던데 나도 그럴걸 그랬담.

가끔은 배열이 해시맵보다 더 빠른듯하다..!

 

그리고 bitwise XOR 연산은 자바에서 ^ 요거 쓰면 된다!