단계별로 풀어보기 > 정렬 > 좌표 정렬하기 2
https://www.acmicpc.net/problem/11651
2차원 평면 위의 점 N개가 주어질 때, y좌표 순으로 정렬하 되, y좌표가 같으면 x좌표 순으로 정렬하라.

좌표 정렬하기 문제와 똑같이 Arrays.sort를 이용하여 y좌표가 같을 경우 x좌표를 비교하여 정렬한다.
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;
public class 좌표_정렬하기_2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][2];
for(int i = 0; i<N; i++){
st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr,(e1,e2) ->{
if(e1[1] == e2[1]){
return e1[0] - e2[0];
}else{
return e1[1] - e2[1];
}
});
StringBuilder sb = new StringBuilder();
for(int[] k: arr){
sb.append(k[0] + " " + k[1]).append("\n");
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
Review
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;
public class 좌표_정렬하기_2_review {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][2];
for(int i = 0; i<N; i++){
st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr, (y1,y2) -> {
if(y1[1] == y2[1]){
return y1[0] - y2[0];
}else{
return y1[1] - y2[1];
}
});
StringBuilder sb = new StringBuilder();
for(int j = 0; j<N; j++){
sb.append(arr[j][0] + " " + arr[j][1]).append("\n");
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}

Review
