
우선 [N][2] 의 크기를 갖는 2차원 배열이 있고 두 좌표를 모두 입력받았을 때, arr[i][0] 와
arr[i][1] 을 입력하고 i를 증가해 갈 것임.
arr[i][0] 와 arr[i+1][0] 을 정렬할 것이고 만약 두 값이 같다면 arr[i][1] 과 arr[i+1][1] 을 비교해주면 됨
Arrays.sort 와 람다식을 이용하여 정렬할 것.
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Sort_5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int arr [][] = new int[N][2];
for (int i =0; i<N; i++){
arr[i][0] = sc.nextInt();
arr[i][1] = sc.nextInt();
}
Arrays.sort(arr,(o1, o2) -> {
if (o1[0] == o2[0]){ //첫번째 원소가 같다면 두 번째 원소끼리 비교
return o1[1] - o2[1];
}else {
return o1[0] - o2[0];
}
});
/* Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] e1, int[] e2) {
if(e1[0] == e2[0]) {
return e1[1] - e2[1];
}
else {
return e1[0] - e2[0];
}
}
}); */
for (int j = 0; j<N; j++){
System.out.println(arr[j][0] + " " + arr[j][1] );
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Sort_5_2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][2];
StringTokenizer st;
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[0] == e2[0]) {
return e1[1] - e2[1];
} else {
return e1[0] - e2[0];
}
});
StringBuilder sb = new StringBuilder();
for(int i = 0 ; i< N ; i++) {
sb.append(arr[i][0] + " " + arr[i][1]).append('\n');
}
System.out.println(sb);
}
}
