[Java] 테이블 해시 함수 - Lv2 프로그래머스코딩테스트/프로그래머스2023. 4. 6. 06:59
Table of Contents
728x90
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/147354
문제풀이 참고 (비트 연산 - bitwise)
https://ko.wikipedia.org/wiki/%EB%B9%84%ED%8A%B8_%EC%97%B0%EC%82%B0
풀이
자바에서 XOR연산자는 ^이다.
연산자를 활용하여 문제를 풀 수 있기 때문에, 문제 설명에서 해당하는 조건에 맞추어 정렬먼 진행하면 된다.
이차원배열의 정렬과 compare메서드를 잘 활용하면 금방 풀 수 있는 문제.
Arrays.sort(data, (o1, o2) -> {
if(o1[col-1]==o2[col-1]) {
return Integer.compare(o2[0], o1[0]);
}
return (o1[col-1] - o2[col-1]);
});
람다식을 활용하여 col값을 기준으로 정렬을 하고, 같을 경우 PK을 기준으로 내림차순한다는 조건이 있었기 때문에 위의 코드처럼 정렬을 해 주었다.
그 후에는 S_I의 범위 내에서 idx의 나머지를 더한 후 XOR연산을 진행하면 된다.
import java.util.Arrays;
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 Integer.compare(o2[0], o1[0]);
}
return (o1[col-1] - o2[col-1]);
});
for(int i=row_begin-1; i<row_end; i++) {
int sum = 0;
for(int j=0; j<data[0].length; j++) {
sum += data[i][j]%(i+1);
}
answer = (answer ^ sum);
}
return answer;
}
}
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!