import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import static java.util.Collections.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] graph = new int[N][2];
for (int i = 0 ; i < N; i++)
{
StringTokenizer st = new StringTokenizer(br.readLine());
graph[i][0] = Integer.parseInt(st.nextToken()); //[0][0] = 첫번째 x값
graph[i][1] = Integer.parseInt(st.nextToken()); //[0][1] = 첫번째 y값
}
Arrays.sort(graph,(a,b) -> a[1] != b[1] ? a[1] - b[1] : a[0] - b[0] );
for (int i = 0 ; i < N; i++)
{
System.out.println(graph[i][0]+" "+graph[i][1]);
}
/
5
0 4 a(0,4) 4 와 2가 다를경우 y기준으로 오름차순
1 2 b(1,2) 4 와 2가 다르지 않을경우 x기준으로 오름차순
1 -1
2 2
3 3
/
}
}
람다식을 이해하는게 조금 어려웠다.
(a,b) -> a[1] != b[1] ? a[1] - b[1] : a[0] - b[0];
a와 b가 각각 배열 1개씩 차지 하고 있는 것이었다.
graph={(2,4),(2,5)};일 경우에
a는 (2,4) b는 (2,5)인 것이다.
a[1]은 4이고 b[1]은 5이다.
a[0]은 2이고 b[0]은 2이다.
y값 기준으로 먼저 정렬하니 a[1] - b[1]을 조건으로 넣은 후
둘이 다르면 그대로 a[1] - b[1] 조건으로 가고
둘이 같으면 a[0] - b[0]을 이용하여 x 기준으로 정렬시킨다.
2차원 배열에서의 람다가 어떻게 쓰이는 지 아주 살짝은 이해한 것 같다.