728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/147354
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해설
중요하게 볼 부분이 2개 있습니다.
- 2차원 배열의 조건이 여러개인 정렬
- XOR
1. 2차원 배열의 조건이 여러개인 정렬
주어진 2차원 배열을 정렬하기 위해 Arrays.sort와 람다식, 삼항연산자를 이용하였습니다.
Arrays.sort(data, (a,b)-> a[col-1]==b[col-1] ? b[0]-a[0] : a[col-1]-b[col-1] );
이때 col은 1부터 시작하므로 원하는 내용을 얻기 위해 0으로 맞춰주었습니다.
2. XOR
사칙연산 이외에는 자주 쓰지 않아서 잘 몰랐지만 비트단위 XOR도 표현하는 방식이 있었습니다.
answer ^= sum;
주의점
- 배열 data는 1번부터 숫자가 들어가 해당 열을 기반으로 연산시 +1을 해주어야 한다.
코드
import java.util.*;
class Solution {
public int solution(int[][] data, int col, int row_begin, int row_end) {
int answer = 0;
Arrays.sort(data, (a,b)-> a[col-1]==b[col-1] ? b[0]-a[0] : a[col-1]-b[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 ^= sum;
}
return answer;
}
}
728x90
'[IT] 코딩테스트 > [문제 및 풀이] 프로그래머스' 카테고리의 다른 글
[프로그래머스] 롤케이크 자르기 / 자바(Java) (0) | 2023.09.01 |
---|---|
[프로그래머스] 점 찍기 / 자바(Java) (0) | 2023.08.31 |
[프로그래머스] 시소 짝꿍 / 자바(Java) (0) | 2023.08.29 |
[프로그래머스] 마법의 엘리베이터 / 자바(Java) (0) | 2023.08.28 |
[프로그래머스] 숫자 변환하기 / 자바(Java) (0) | 2023.08.27 |