🔃 Java 람다식으로 2차원 배열 정렬하기 (오름차순 / 내림차순)
✅ 정렬 기준
- x 오름차순 → x가 같으면 y 오름차순
- x 내림차순 → x가 같으면 y 내림차순
1
2
3
4
5
6
7
8
9
10
11
12
13
| int N = Integer.parseInt(br.readLine());
// x,y 좌표를 저장할 배열 new int[N][2];
int[][] pos = new int[N][2];
for (int i = 0; i < N; i++) {
String[] xy = br.readLine().split(" ");
int x = Integer.parseInt(xy[0]);
int y = Integer.parseInt(xy[1]);
pos[i][0] = x;
pos[i][1] = y;
}
System.out.println(Arrays.deepToString(pos));
|
🎯 예제 입력
5
3 4
1 1
1 -1
2 2
3 3
# 출력값
[[3, 4], [1, 1], [1, -1], [2, 2], [3, 3]]
🔼 오름차순 정렬 (x 오름차순 → x 같을 경우 y 오름차순)
1
2
3
4
5
6
| Arrays.sort(pos, (a, b) -> {
if (a[0] == b[0]) {
return Integer.compare(a[1], b[1]); // y 오름차순
}
return Integer.compare(a[0], b[0]); // x 오름차순
});
|
🔹 예제 출력
StringBuilder로 출력
1 -1
1 1
2 2
3 3
3 4
🔽 내림차순 정렬 (x 내림차순 → x 같을 경우 y 내림차순)
1
2
3
4
5
6
| Arrays.sort(pos, (a, b) -> {
if (a[0] == b[0]) {
return Integer.compare(b[1], a[1]); // y 내림차순
}
return Integer.compare(b[0], a[0]); // x 내림차순
});
|
🔹 예제 출력
StringBuilder로 출력
3 4
3 3
2 2
1 1
1 -1
🧐 참고: Integer.compare() 사용 이유
비교식 | 설명 |
---|
Integer.compare(a, b) | a < b 면 -1, 오름차순 기준 |
Integer.compare(b, a) | a < b 면 1, 내림차순 기준 |
📈 → 조건문 없이 간각하고 명확한 정렬 기준 구현 가능!