💡 문제
권장 시간
- 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 연산은 자바에서 ^ 요거 쓰면 된다!