반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/147354
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 분석
[제한 사항]
- 1 ≤ data의 길이 ≤ 2,500
- 1 ≤ data의 원소의 길이 ≤ 500
- 1 ≤ data[i][j] ≤ 1,000,000
- data[i][j]는 i + 1 번째 튜플의 j + 1 번째 컬럼의 값을 의미합니다.
- 1 ≤ col ≤ data의 원소의 길이
- 1 ≤ row_begin ≤ row_end ≤ data의 길이
주어진 이차원 배열인 data 를 col 기준으로 오름차순 정렬하되, 값이 동일할 경우에는 첫 번째 컬럼을 기준으로 내림차순하여 정렬한다.
정렬된 데이터에서 S_i 를 i 번째 행의 튜플에 대해 각 컬럼의 값을 i 로 나눈 나머지들의 합으로 정의한다.
이때 row_begin ~ row_end 사이의 모든 S_i 누적하여 XOR 한 값을 해시 값으로서 반환한다.
문제 접근
해당 문제는 문제에서 시키는 그대로 하면 문제를 풀 수 있다.
1. data 를 조건에 따라 정렬한다.
2. S_i 를 누적하여 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];
}
});
for(int i=row_begin; i<=row_end; i++){
int sum = 0;
for(int n : data[i-1]){
sum += n % i;
}
answer = answer ^ sum;
}
return answer;
}
}
반응형
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 배달 (0) | 2024.04.04 |
---|---|
[프로그래머스] 점 찍기 (0) | 2024.04.04 |
[프로그래머스] 호텔 대실 (0) | 2024.04.02 |
[프로그래머스] 멀쩡한 사각형 (0) | 2024.03.29 |
[프로그래머스] [3차] 방금그곡 (0) | 2024.03.29 |