문제에 각 단계에 맞게 계산하는 쉬운 문제였다.
오랜만에 Comparator를 사용하는 것과 비트 연산이 나와서 재밌었다.
다만 문제 설명이 친절하지는 않아서 예시를 보며 풀었다.
로직
문제 각 단계에 맞게 로직을 작성하면 된다.
1. Comparator를 사용하여 문제에 제시된 대로 정렬하면 된다.
2. 배열을 순회하며 값을 찾아 list에 넣는다.
주의해야 할 것은 각 컬럼의 값이 0부터가 아니라 1부터이고
주어진 타입은 배열이기 때문에 col, row_begin, row_end 값을 보정해야 한다.
3. list를 순회하며 answer에 XOR 연산을 진행한다.
최종 코드
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 o1[col - 1] - o2[col - 1];
} else {
return o2[0] - o1[0];
}
});
// 나머지 합 구하기
List<Integer> list = new ArrayList<>();
for (int i = row_begin - 1; i <= row_end - 1; i++) {
int temp = 0;
for (int j = 0; j < data[i].length; j++) {
temp += data[i][j] % (i + 1);
}
list.add(temp);
}
// XOR 연산
for (int i : list) {
answer ^= i;
}
return answer;
}
}
'코딩 테스트' 카테고리의 다른 글
(Java) 프로그래머스 - 광물 캐기 (0) | 2023.07.25 |
---|---|
(Java) 프로그래머스 - 미로 탈출 (0) | 2023.07.22 |
(Java) 프로그래머스 - 마법의 엘리베이터 (0) | 2023.07.13 |
(Java) 프로그래머스 - 호텔 대실 (0) | 2023.07.10 |
(Java) 프로그래머스 - 우박수열 정적분 (0) | 2023.07.08 |